因此,我编写了一个小的python代码,该代码在使用exec_command
用户时挂在support
步骤上,并且在使用root
用户时也可以正常工作
以支持用户身份登录时,从终端运行脚本没有问题。这就是我无法理解paramiko.exec_command为何挂起的原因。
我尝试从运行python的Windows 10运行脚本 Python 3.6.6 | Anaconda自定义(64位)| (默认,2018年6月28日,11:27:44)在Win32上运行[MSC v.1900 64位(AMD64)]以及运行Python 3.7.3的ubuntu 19.04(默认,2019年3月27日,22:11:17) [GCC 7.3.0] :: Linux上的Anaconda,Inc。
我尝试使用ssh的机器正在运行CentOS版本6.9(最终版)
这是这台机器上的ls -ltr
-rwxr-xr-x. 1 support support 10430264 May 10 12:13 port_check
我尝试从要通过SSH执行的命令中添加和删除sudo
,还注释了ssh.invoke_shell()
import sys
import paramiko
def pew_print(some_input):
try:
some_input = some_input.decode("utf-8")
except Exception as errors:
print("Errors : {0}".format(errors))
pass
some_input = str(some_input)
sys.stdout.write(some_input)
sys.stdout.write("\n")
sys.stdout.flush()
def ssh_command_output(ssh, command_string):
# ssh.invoke_shell()
stdin, stdout, stderr = ssh.exec_command(command_string, timeout=90)
pew_print(stdout.read())
def something(ip_address):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip_address, port=22, username="support", password="pass")
# ssh_command_output(ssh, "sudo chmod 755 /home/support/port_check")
# ssh_command_output(ssh, "sudo /home/support/port_check")
ssh_command_output(ssh, "ls -ltr")
使用support
用户时,我期望使用root
用户时结果是相同的
编辑:
sudo
不需要支持用户密码,我已经尝试过仅从支持用户处执行ls -ltr
,并且该请求也将挂起。
我通常可以ssh support@host
然后执行以上所有命令
答案 0 :(得分:0)
因此,在深入探讨问题之后。我发现不允许远程执行,因此关闭了这个问题。