- 目标:使用Python远程控制Linux电脑的关机
- 系统配置需求:
1。需要安装SSH Client/Server tool,Ubuntu安装命令如下
$ sudo apt-get install openssh-client
$ sudo apt-get install openssh-server
2。 启动SSH Server,命令如下,
$ sudo /etc/init.d/ssh start
3。控制主机需要安装Python (推荐Python3.5版本以上),并安装Python包“paramiko”, 安装命令如下,
$ pip3 install paramiko
4。控制主机与被控制机器在同一局域网内
- 手动验证:
1。打开控制主机Terminal,输入ssh连接命令如下(假设被控制机器IP地址是192.168.3.6), 系统会要求输入用户名和密码等信息,请按照提示填入正确信息;
$ ssh 192.168.3.6
2。成功连接到目标电脑后,使用如下命令关掉被控制机器,命令如下,被控制电脑将执行关机动作。
$ sudo shutdown -h now
(输入被控制电脑密码)
- 使用Python远程控制Linux电脑的关机,示例代码如下,将下面代码保存为“remote_power_off.py”,执行命令“python3 remote_power_off.py”
# -*- coding:utf-8 -*-
import paramiko
host = '192.168.3.6'
user = 'test001'
password = '××××××××'
def ssh_exec_command(command):
try:
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(host, 22, user, password)
print("command: " + command)
std_in, std_out, std_err = ssh_client.exec_command(command, get_pty=True)
std_in.write(password + '\n')
for line in std_out:
print(line.strip("\n"))
for line in std_err:
print(line.strip("\n"))
ssh_client.close()
except Exception as e:
print("error: " + str(e))
if __name__ == '__main__':
#ssh_exec_command("ls -l")
ssh_exec_command("sudo shutdown -h now")