Python 从本地计算机到linux主机的SSH和从sudo到root用户的SSH

Python 从本地计算机到linux主机的SSH和从sudo到root用户的SSH,python,linux,ssh,sudo,tty,Python,Linux,Ssh,Sudo,Tty,使用ssh到主机的子进程 以下是我作为用户用于ssh和运行命令的代码片段。当我尝试使用sudo命令时,我得到了与tty相关的错误——而不是一个终端(类似的东西) 但我不能在命令下运行 sshProcess.stdin.write("sudo su - serviceuser \n") 您可以通过指定-t选项强制进行伪tty分配 subprocess.Popen(['ssh -t', hostname], ..... 从manssh 强制伪tty分配。这可用于在远程机器上执行任意基于屏幕的程序

使用ssh到主机的子进程

以下是我作为用户用于ssh和运行命令的代码片段。当我尝试使用sudo命令时,我得到了与tty相关的错误——而不是一个终端(类似的东西)

但我不能在命令下运行

sshProcess.stdin.write("sudo su - serviceuser \n")

您可以通过指定-t选项强制进行伪tty分配

subprocess.Popen(['ssh -t', hostname], .....
manssh

强制伪tty分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t选项强制tty分配,即使ssh没有本地tty


您可以通过指定-t选项强制进行伪tty分配

subprocess.Popen(['ssh -t', hostname], .....
manssh

强制伪tty分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t选项强制tty分配,即使ssh没有本地tty


我以前试过,但没有成功我得到下面的错误回溯(上次调用):文件“ssh.py”,第11行,在sshProcess=subprocess.Popen(['ssh-t',hostname],stdin=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True,bufsize=0)文件“/usr/lib/python2.7/subprocess.py”,第711行,在init errread中,errwrite)文件“/usr/lib/python2.7/subprocess.py”,第1343行,在执行子进程引发子进程异常OSError:[Errno 2]没有这样的文件或目录我在Popen中添加了shell=True,但我得到了另一个错误sshProcess=subprocess.Popen(['ssh-t',hostname],shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True,bufsize=0)用法:ssh[-1246AACFGGKMNNQSTTVVXXYY][b bind_address][c cipher_spec][D[bind_address][E log_file][E escape_char F configfile][I pkcs11][I identity_file][J[user@]host[:port][-L address][-l登录名][m mac_规范][O ctl_cmd][O选项][p端口][Q查询选项][R地址][S ctl_路径][W主机:端口][W本地\u tun[:远程\u tun]][用户@]主机名[命令]@Springhills您应该回答您的问题,以便在那里添加此新信息。我以前尝试过,但没有成功。我正在进行错误回溯(最近一次调用):文件“ssh.py”,第11行,在sshproces=subprocess.Popen(['ssh-t',hostname],stdin=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True,bufsize=0)文件“/usr/lib/python2.7/subprocess.py”,第711行,在init errread,errwrite)文件“/usr/lib/python2.7/subprocess.py”,第1343行,在_execute_child raise child_exception OSError:[Errno 2]没有这样的文件或目录我在Popen中添加了shell=True,但我得到了另一个错误sshProcess=subprocess.Popen(['ssh-t',,hostname],shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE,universal_newlines=True,bufsize=0)用法:ssh[-1246AACFGGKMNNQSTTVVXXYY][b bind_address][c cipher_spec][D[bind_address][E log_file][E escape_char F configfile][I pkcs11][I identity_file][J[user@]host[:port][-L address][-l登录名][m mac_-spec][O ctl_-cmd][O选项][p端口][Q查询选项][R地址][S ctl_路径][W主机:端口][W本地\u-tun[:远程\u-tun]][用户@主机名[命令]@Springhills如果要在那里添加此新信息,请回答您的问题。
 -t