- 目標:使用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")