python实现Synology NAS的关机
一、问题描述 因为需要使用编程进行NAS的关机,而且这个程序不能在NAS内部运行,因此想到了使用远程连接来进行NAS的关机操作。因为NAS是一种定制的LINUX系统,因此可以利用Python使用SSH来远程连接,并使用命令行关机指令shutdown -h now实现远程关机。二、实验步骤1、启用NAS的SSH功能1、打开控制面板选择高级模式2、进入终端机和SNMP3、选择启用SS...
·
一、问题描述
因为需要使用编程进行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()
其他登录方式参考
参考文章
更多推荐
已为社区贡献1条内容
所有评论(0)