Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用paramiko使用-t选项进行SSH_Python_Linux_Ssh_Paramiko - Fatal编程技术网

Python 如何使用paramiko使用-t选项进行SSH

Python 如何使用paramiko使用-t选项进行SSH,python,linux,ssh,paramiko,Python,Linux,Ssh,Paramiko,我正在尝试登录到一些远程服务器并尝试获取系统信息。在这个过程中,我在一些服务器中遇到了一个问题,在这些服务器中,执行SUDO命令实际上并不需要密码。为了克服这个问题并使脚本通用,我们提出了类似于“sudo-k udisksctl status”的选项,即提供-k选项,以便每次请求密码时都可以使用它 现在出现了另一个问题:当尝试登录到某些服务器时,出现了以下错误:“对不起,您必须有tty才能运行sudo centos”。当googled从中了解到使用-t选项进行ssh的选项时 所以我的问题是如何使

我正在尝试登录到一些远程服务器并尝试获取系统信息。在这个过程中,我在一些服务器中遇到了一个问题,在这些服务器中,执行SUDO命令实际上并不需要密码。为了克服这个问题并使脚本通用,我们提出了类似于“sudo-k udisksctl status”的选项,即提供-k选项,以便每次请求密码时都可以使用它

现在出现了另一个问题:当尝试登录到某些服务器时,出现了以下错误:“对不起,您必须有tty才能运行sudo centos”。当googled从中了解到使用-t选项进行ssh的选项时

所以我的问题是如何使用paramiko使用-t选项进行SSH?或者如何克服这个问题?

import paramiko
import pprint

ip_list = [
["192.168.11.44", "root", "aaa", "aaa"],
["192.168.11.6", "root", "bbb", "bbb"]
]
os_check_list = ["DISTRIB_DESCRIPTION"]
os = None

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

for ip in ip_list:
    ssh.connect(ip[0], username = ip[1], password = ip[2])

    stdin, stdout, stderr = ssh.exec_command("sudo -k udisksctl status")
    stdin.write(ip[3]+"\n")

您可以使用
get_pty
参数:

stdin, stdout, stderr = ssh.exec_command("sudo -k udisksctl status", get_pty=True)

不过也有一些副作用。使用
get_pty=True
,所有输出都将发送到
stdout
,因此您无法再从
stderr
获取数据。

您可以添加一些关于get_pty在这个特定命令中执行的操作的更多信息吗。。就像
ssh-t
,它要求远程ssh服务器分配一个pty(伪终端)。