一、问题描述

 因为需要使用编程进行NAS的关机,而且这个程序不能在NAS内部运行,因此想到了使用远程连接来进行NAS的关机操作。因为NAS是一种定制的LINUX系统,因此可以利用Python使用SSH来远程连接,并使用命令行关机指令shutdown -h now实现远程关机。

二、实验步骤
1、启用NAS的SSH功能

1、打开控制面板选择高级模式
在这里插入图片描述
2、进入终端机和SNMP
在这里插入图片描述
3、选择启用SSH功能
在这里插入图片描述

2、Python实现远程关机

1、安装paramiko模块
 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。跟常用软件xshell 、xftp功能一样,但是可以连接多台服务器,进行复杂的操作。
 在这里我使用了Jupyter,因此使用了anaconda安装方法。打开Anaconda Prompt (anaconda)终端,输入以下命令

conda install paramiko

2、执行Python程序
 这里使用了SSHClient基于用户名和密码的 sshclient 方式登录。其中hostname填写NAS的ip地址,password填写自己设置的密码,command是需要执行的命令。

import paramiko

# 建立一个sshclient对象
ssh = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 调用connect方法连接服务器
# 需要管理员账号
ssh.connect(hostname='192.168.1.104', port=22, username='root', password='123456')
# 执行命令
# 关机命令
command="shutdown -h now"
stdin, stdout, stderr = ssh.exec_command(command)
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode())
print('执行完毕')
# 关闭连接
ssh.close()

其他登录方式参考
参考文章

Logo

更多推荐