paramiko.from_transport怎么用
时间: 2023-06-03 11:06:38 浏览: 175
好的,关于你的问题,paramiko.from_transport 是一个方法,用于从传输对象中创建一个SSH客户端。在使用该方法前,需要先创建一个SSH传输对象。以下是一个使用paramiko.from_transport的简单例子:
```python
import paramiko
transport = paramiko.Transport(('your_hostname', 22))
transport.connect(username='your_username', password='your_password')
client = paramiko.SSHClient()
client._transport = transport
stdin, stdout, stderr = client.exec_command('ls -l')
print(stdout.read().decode())
client.close()
```
以上代码实现了连接到一个SSH服务器,并执行一个'ls -l'命令的功能。
相关问题
def sftpfile(host,getfiles,putfiles): try: logging.info("connnect to "+host['ip']+",user "+host['username']+",sftp") t=paramiko.Transport((host['ip'],int(host['port']))) t.connect(username=host['username'],password=host['passwd']) sftp =paramiko.SFTPClient.from_transport(t) if getfiles<>None: for file in getfiles: logging.info("get "+file) file=file.replace("\n", "") sftp.get(file,file) if putfiles<>None: for file in putfiles: file=file.replace("\n", "") logging.info("put "+file) sftp.put(file,file) t.close(); 这段代码中的getfiles<>None:标红了怎么办?
在这段代码中,`getfiles<>None` 的标红可能是因为使用了不支持的比较操作符。通常情况下,比较操作符是 `!=`,而不是 `<>`。
你可以尝试将 `getfiles<>None` 替换为 `getfiles != None`,然后重新运行代码。这样就可以解决标红的问题。
修正后的代码如下所示:
```python
def sftpfile(host, getfiles, putfiles):
try:
logging.info("connect to " + host['ip'] + ", user " + host['username'] + ", sftp")
t = paramiko.Transport((host['ip'], int(host['port'])))
t.connect(username=host['username'], password=host['passwd'])
sftp = paramiko.SFTPClient.from_transport(t)
if getfiles != None:
for file in getfiles:
logging.info("get " + file)
file = file.replace("\n", "")
sftp.get(file, file)
if putfiles != None:
for file in putfiles:
file = file.replace("\n", "")
logging.info("put " + file)
sftp.put(file, file)
t.close()
```
请注意,这只是一个假设的解决方案。如果问题仍然存在,请提供更多的上下文或错误信息,以便我能够提供更准确的帮助。
E:\PythonProjects\test\venv\Scripts\python.exe E:\PythonProjects\test\test.py E:\PythonProjects\test\venv\Lib\site-packages\paramiko\transport.py:202: CryptographyDeprecationWarning: Blowfish has been deprecated "class": algorithms.Blowfish, Traceback (most recent call last): File "E:\PythonProjects\test\test.py", line 1, in <module> import paramiko File "E:\PythonProjects\test\venv\Lib\site-packages\paramiko\__init__.py", line 32, in <module> from paramiko.client import ( File "E:\PythonProjects\test\venv\Lib\site-packages\paramiko\client.py", line 35, in <module> from paramiko.hostkeys import HostKeys File "E:\PythonProjects\test\venv\Lib\site-packages\paramiko\hostkeys.py", line 23, in <module> from collections import MutableMapping ImportError: cannot import name 'MutableMapping' from 'collections' (E:\Python\Lib\collections\__init__.py)怎么改错
这个错误是由于在paramiko模块中的hostkeys.py文件中导入了collections模块的MutableMapping时出错。这个问题可能是由于Python版本不兼容导致的。
要解决这个问题,你可以尝试以下几种方法:
1. 确保你使用的Python版本符合paramiko模块的要求。你可以查看paramiko模块的文档或者官方网站了解它所支持的Python版本。
2. 如果你的Python版本符合要求,但仍然出现这个错误,那么可能是因为你的Python环境中的collections模块没有MutableMapping属性。这可能是因为Python版本较旧,没有这个属性。
- 如果你使用的是Python 2.x版本,可以尝试将`from collections import MutableMapping`改为`from collections.abc import MutableMapping`。
- 如果你使用的是Python 3.x版本,可以尝试将`from collections import MutableMapping`改为`from collections.abc import MutableMapping`或者`from collections import MutableMapping`。
3. 如果上述方法都不起作用,你可以尝试更新paramiko模块到最新版本,使用命令`pip install --upgrade paramiko`来更新。
希望这些方法能够帮助你解决问题!如果还有其他疑问,请告诉我。
阅读全文