iT邦幫忙

0

使用 Python ssh 连接到远程服务器,并运行 sudo

当我直接在操作系统中运行 “echo Shanghai2010 | sudo -S reboot”,系统可以正常重启,但当我通过 Python aramiko 登录到服务器上,运行却没有任何反应,也没有任何报错,最后一个的 print 可以正常打印出来。

import paramiko

ip = "192.168.1.20"
username = "itmanager"
password = "P@ssw0rd"

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ip, port=22, username=username, password=password, timeout=20)
client.exec_command('echo P@ssw0rd | sudo -S reboot')
print("Command have been completed")

但我如果把登录的用户换成 root 用户,就可以正常运行 root 命令了。但其他用户却不行,其他用户,直接登录到系统,运行该命令,是可以正常重启系统的,这个是怎么回事?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
一級屠豬士
iT邦大師 1 級 ‧ 2020-08-07 11:56:48
看更多先前的回應...收起先前的回應...
as900 iT邦研究生 5 級 ‧ 2020-08-07 13:05:05 檢舉

这个方法不行,我用 root 用户连接是可以的,但用其他用户就不是。但其他用户之间登录到系统,输入相同的命令是可以的。

你別用你那招 echo 的. 那不是好方法.
你還要讀取回應的訊息,不然你就是一直試誤.
別太快下結論說哪種方法不行.
你先切成sudo , 再執行個ls 或 df 看看.

as900 iT邦研究生 5 級 ‧ 2020-08-07 14:47:14 檢舉

我就用的上面方法,但我用的是普通用户,不是 root 用户。

祝你好運.

我要發表回答

立即登入回答