由于特殊的身份验证需要,为使用Python Paramiko传输类执行的命令(su)提供输入
我使用Paramiko连接unix主机,目标是执行以下命令:由于特殊的身份验证需要,为使用Python Paramiko传输类执行的命令(su)提供输入,python,ssh,paramiko,Python,Ssh,Paramiko,我使用Paramiko连接unix主机,目标是执行以下命令: whoami-->这将打印PAM功能帐户 hostname-->unix服务器的主机名 sudo su–(对于sudo,不需要密码,它会自动进入root用户)-->这将进入root用户 whoami-->这应该打印根目录 #1和#2命令工作正常,在标准输出响应中可以看到预期的结果 trans.auth_interactive(username='username', handler=handler) session = trans.o
whoami
-->这将打印PAM功能帐户hostname
-->unix服务器的主机名sudo su
–(对于sudo,不需要密码,它会自动进入root用户)-->这将进入root用户whoami
-->这应该打印根目录trans.auth_interactive(username='username', handler=handler)
session = trans.open_session()
stdout_data = None
stderr_data = None
(stdin, stdout, stderr) = session.exec_command("sudo su -")
command = 'whoami'
stdin.write(command + '\n')
stdin.flush()
result = stdout.readlines()
print(result)
output = str(result)
print(output)
print_hi('done')
控制台日志
INFO:paramiko.transport:Authentication(键盘交互)成功!
调试:paramiko.transport:[chan 0]最大数据包长度:32768字节
调试:paramiko.transport:[chan 0]最大数据包输出:32768字节
调试:paramiko。传输:已打开Secsh通道0。
调试:paramiko.transport:[chan 0]Sesch通道0请求正常
回溯(最近一次呼叫最后一次):
文件“C:/Users/tpukrisi/PycharmProjects/Paramiko/paramikoppam.py”,第77行,在
连接pam主机()
文件“C:/Users/tpukrisi/PycharmProjects/Paramiko/paramikoppam.py”,第21行,在connect_pam_host中
(stdin、stdout、stderr)=session.exec_命令(“sudosu-”)
TypeError:无法解压缩不可编辑的非类型对象
调试:paramiko.transport:传输线程中的EOF
进程已完成,退出代码为1
谢谢
Krishna低级
通道.exec\u命令
不返回任何内容(与高级SSHClient.exec\u命令不同)
如果要获取I/O,必须调用Channel
的makefile*
方法
这是SSHClient.exec\u命令在内部执行的简化代码:
chan = transport.open_session()
chan.exec_command(command)
stdin = chan.makefile_stdin("wb", bufsize)
stdout = chan.makefile("r", bufsize)
stderr = chan.makefile_stderr("r", bufsize)