python - 当我使用fabric == 2.4.0'sudo helper getpass.getpass'时如何修复'没有可用的身份验证方法'
问题描述
当我使用python结构模块时,按照教程:点击这里 连接远程主机,并执行shell命令,但出现错误:</p>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<decorator-gen-4>", line 2, in sudo
File "/root/tempFabric/env/lib/python2.7/site-packages/fabric/connection.py", line 29, in opens
self.open()
File "/root/tempFabric/env/lib/python2.7/site-packages/fabric/connection.py", line 615, in open
self.client.connect(**kwargs)
File "/root/tempFabric/env/lib/python2.7/site-packages/paramiko/client.py", line 437, in connect
passphrase,
File "/root/tempFabric/env/lib/python2.7/site-packages/paramiko/client.py", line 750, in _auth
raise SSHException("No authentication methods available")
paramiko.ssh_exception.SSHException: No authentication methods available
$ import getpass
$ from fabric import Connection, Config
$ sudo_pass = getpass.getpass("123456")
123456
$ config = Config(overrides={'sudo': {'password': sudo_pass}})
$ c=Connection(host='192.168.0.156',user='ai',port=22,config=config)
$ c.sudo('whoami', hide='stderr')
我希望的输出c.sudo('whoami', hide='stderr')
是:
ai
<Result cmd="...whoami" exited=0>
解决方案
尝试这个
from fabric import Connection
result = Connection('web1', user='hello', connect_kwargs={
"password": "123456",
}, port=22).run('uname -s', hide=True)
msg = "Ran {0.command!r} on {0.connection.host}, got stdout:\n{0.stdout}"
print(msg.format(result))
推荐阅读
- excel - 无法使用索引函数从自定义类中获取值
- msbuild - PackageReference 将版本逻辑解析为 API
- java - JPA、Maven、Hibernate 中的 EntityManager 没有持久性提供程序
- laravel - laravel 策略错误
- java - 如何在 Eclipse 中导出全局检查样式规则集
- python - 问题输入数据,python
- java - 'else' 中的语句被打印多次,但我希望它在 'if' 错误时只打印一次
- sql-server-2008 - SSIS将表从一台服务器复制到另一台服务器
- javascript - 未捕获的参考错误计算未在 HTMLInputElement.onChange 中定义
- regex - 从 NiFi 的时代中提取日期