python - Python - 在运行时传递变量
问题描述
我是 Python 新手,试图在运行时将一些变量传递给 Python 脚本文件,但出现错误。我试图对值进行硬编码,并且效果很好。
#!/usr/bin/python
import os
import sys
from getpass import getpass
import paramiko
def deploy_key(key, server, username, password):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(server, username=userid, password=userpass)
client.exec_command('mkdir -p ~/.ssh/')
client.exec_command('echo "%s" > ~/.ssh/authorized_keys' % key)
client.exec_command('chmod 644 ~/.ssh/authorized_keys')
client.exec_command('chmod 700 ~/.ssh/')
key = open(os.path.expanduser('~/.ssh/id_test.pub')).read()
print(sys.argv[1])
userid=sys.argv[1]
print(sys.argv[2])
userpass=sys.argv[2]
print(sys.argv[3])
hosts=sys.argv[3]
for host in hosts:
deploy_key(key, host, userid, userpass)
我的输入
python ssh_key.py root bssaadf 127.0.0.1
得到错误
File "ssh_key.py", line 26, in <module>
deploy_key(key, host, userid, userpass)
File "ssh_key.py", line 12, in deploy_key
client.connect(server, username=userid, password=userpass)
File "/usr/lib/python2.7/site-packages/paramiko/client.py", line 305, in connect
retry_on_signal(lambda: sock.connect(addr))
File "/usr/lib/python2.7/site-packages/paramiko/util.py", line 269, in retry_on_signal
return function()
File "/usr/lib/python2.7/site-packages/paramiko/client.py", line 305, in <lambda>
retry_on_signal(lambda: sock.connect(addr))
File "/usr/lib64/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
解决方案
您正在读取hosts
字符串,因此 for 循环遍历其字符(在每次迭代中,host
都是不同的字符)。用作hosts
参数 fordeploy_key
应该可以正常工作。
推荐阅读
- c# - 在restful api c#中处理位图
- jquery-terminal - 在尝试为我的投资组合网站构建自己的 Web 终端时,我遇到了 jquery-terminal 的一些问题
- java - 是否有 RecyclerView 的 OnScrollListener 在滚动时连续调用,而不仅仅是在状态更改或滚动开始时调用?
- reactjs - 如何在连接检查时显示等待指示器?
- vue.js - Vue / Vuetify - 在 a 中显示 v-select 文本值
- swift - 有什么方法可以在不闪烁或闪烁的情况下使用 MKUserLocation 移动 MKCircle 叠加层?
- linux - hcitool lescan 设置扫描参数失败:输入/输出错误
- python - 比较两组大型数据时,复杂性可以从 O(n^2) 降低到 O(n) 吗?
- javascript - 将 Vue.js 集成到现有 ASP.NET MVC5 项目中的最佳方式
- c - Linux 中的 kmemdup_nul() 和 kstrndup() 有什么区别?