Python Paramiko exec_命令失败,';非类型';对象是不可编辑的
我是帕拉米科的新手。我试图创建一个简单的脚本,允许任何人使用他们的Linux凭据来运行该命令。我决定用一个简单的Python Paramiko exec_命令失败,';非类型';对象是不可编辑的,python,python-3.x,ssh,paramiko,Python,Python 3.x,Ssh,Paramiko,我是帕拉米科的新手。我试图创建一个简单的脚本,允许任何人使用他们的Linux凭据来运行该命令。我决定用一个简单的ls命令进行测试,但我收到了错误 import paramiko username = *<USERNAME>* hostname = *<HOSTNAME>* port = 22 trans = paramiko.Transport((hostname,port)) trans.connect(username=username, password=passw
ls
命令进行测试,但我收到了错误
import paramiko
username = *<USERNAME>*
hostname = *<HOSTNAME>*
port = 22
trans = paramiko.Transport((hostname,port))
trans.connect(username=username, password=password)
channel = trans.open_channel("session")
print(channel.send_ready())
print(channel.get_transport())
stdin,stdout,stderr = channel.exec_command("ls -lah")
trans.close()
导入paramiko
用户名=**
主机名=**
端口=22
trans=paramiko.Transport((主机名,端口))
trans.connect(用户名=用户名,密码=密码)
信道=传输开放信道(“会话”)
打印(channel.send_ready())
打印(channel.get_transport())
stdin,stdout,stderr=channel.exec_命令(“ls-lah”)
trans.close()
我收到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-28-ce837beea6fe> in <module>()
6 trans.connect(username=username, password=password)
7 channel = trans.open_channel("session")
----> 8 stdin,stdout,stderr = channel.exec_command("ls -lah")
TypeError: 'NoneType' object is not iterable
TypeError回溯(最近一次调用)
在()
6传输连接(用户名=用户名,密码=密码)
7频道=传输开放频道(“会话”)
---->8 stdin,stdout,stderr=channel.exec_命令(“ls-lah”)
TypeError:“非类型”对象不可编辑
有没有关于我可能做得不对的想法
会话
通道(除非您的服务器实现了一些非标准通道)。有sftp
、shell
和exec
频道
您想使用exec
频道exec
通道。就用吧
SSHClient.exec_命令
(与Channel.exec_命令
相反)返回3-tople您在
exec_命令中看到了什么
返回标准输入、标准输出和标准错误的元组?相反,它表示命令的I/O连接到通道。很明显,它返回None
@kindall我想他正在阅读客户机文档:@MoxieBall但是OP调用频道。exec_命令
,而不是SSHClient.exec_命令
——OP代码的两个问题中的一个,请看我的答案。啊哈。没有意识到客户端和服务器API如此不同。顺便说一句,Paramiko只是客户端库。Channel
和SSHClient
都是客户端类
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
command = 'ls -lah'
(stdin, stdout, stderr) = s.exec_command(command)