import paramiko def shutdown_remote_system(): # 远程服务器的IP地址和SSH登录信息 remote_host = '192.168.0.106' remote_port = 22 remote_username = 'root' remote_password = '123' # 创建SSH连接 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(remote_host, remote_port, remote_username, remote_password) # 执行关机命令 ssh.exec_command('sudo shutdown -h now') # 关闭SSH连接 ssh.close() 缺少是否已关机判断
时间: 2024-02-20 22:02:33 浏览: 80
你的代码是远程执行关机命令的代码,但是确实缺少判断远程系统是否已经关机的部分。
你可以通过在远程服务器上执行一个命令,判断系统是否已经关机。例如,你可以通过 ping 命令测试远程服务器是否可达。
以下是一个示例代码,可以在远程服务器上执行指定的命令并判断系统是否已经关机:
```python
import paramiko
import time
def shutdown_remote_system():
# 远程服务器的IP地址和SSH登录信息
remote_host = '192.168.0.106'
remote_port = 22
remote_username = 'root'
remote_password = '123'
# 创建SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(remote_host, remote_port, remote_username, remote_password)
# 执行关机命令,并等待一段时间
ssh.exec_command('sudo shutdown -h now')
time.sleep(10)
# 判断系统是否已经关机
while True:
response = os.system('ping -c 1 ' + remote_host)
if response == 0:
time.sleep(5)
else:
break
# 关闭SSH连接
ssh.close()
```
这段代码中,使用了 `os.system` 函数来执行 ping 命令,判断远程服务器是否可达。如果远程服务器不可达,则说明系统已经关机。循环检测远程服务器是否可达,直到远程服务器不可达时退出循环。
阅读全文