如何在命令行参数中接受密码,以便使用python进行ssh登录
我正在使用ssh登录到远程设备。我有一个python脚本。我运行的命令是: ./python_script.py sshdevice@ip_address 我想使用此脚本的一个参数创建密码。我的python脚本中有以下内容如何在命令行参数中接受密码,以便使用python进行ssh登录,python,linux,ssh,Python,Linux,Ssh,我正在使用ssh登录到远程设备。我有一个python脚本。我运行的命令是: ./python_script.py sshdevice@ip_address 我想使用此脚本的一个参数创建密码。我的python脚本中有以下内容 try: p = subprocess.Popen( ['ssh', '-s', '-l', '<name1>', <host_name>, '-p', str(port), '<something>'],
try:
p = subprocess.Popen(
['ssh', '-s', '-l', '<name1>', <host_name>, '-p', str(port), '<something>'],
bufsize=BUFSIZE,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=False)
except Exception, err:
print 'Failed to run ssh command! (' + str(err) + ')'
sys.exit()
试试看:
p=子进程Popen(
[ssh'、'-s'、'-l'、'-p',str(端口),'''],
bufsize=bufsize,
stdin=子流程.PIPE,
stdout=子流程.PIPE,
stderr=subprocess.STDOUT,
外壳=假)
除例外情况外,错误:
“打印”无法运行ssh命令!(“+str(err)+”)”
sys.exit()
我不知道我的问题是否清楚,但我想知道如何让我的ssh脚本接受密码参数。我想使用
sys.argv[]
从python脚本访问它,请考虑以下用法:
./python_script.py ssh device@ip_address passwd
现在,您可以通过以下方式访问参数:
import sys
if len(sys.argv) < 4:
print("Not enough arguments!")
sys.exit()
ssh = sys.argv[1]
device = sys.argv[2].split("@")[0]
ip_address = sys.argv[2].split("@")[1]
passwd = sys.argv[3]
导入系统
如果len(sys.argv)<4:
打印(“参数不足!”)
sys.exit()
ssh=sys.argv[1]
device=sys.argv[2]。拆分(“@”)[0]
ip_地址=sys.argv[2]。拆分(“@”)[1]
passwd=sys.argv[3]
要调用带有密码的ssh
命令,您需要sshpass
希望这有帮助 python中有一个名为fabric的库。只要阅读它,您就会知道如何做到这一点。
或者通过github安装ssh pass,也是出于同样的目的。所以这是对我有效的最终解决方案。 我使用
sudo-apt-get-install-sshpass
那么我修改的代码如下。正如linusg在上面的回答中建议的那样,我从命令行获取了密码
try:
p = subprocess.Popen(
['sshpass','-p',password,'ssh', '-s', '-l', '<name1>', <host_name>, '-p', str(port), '<something>'],
bufsize=BUFSIZE,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=False)
except Exception, err:
print 'Failed to run ssh command! (' + str(err) + ')'
sys.exit()
试试看:
p=子进程Popen(
['sshpass'、'-p',password、'ssh'、'-s'、'-l'、'-p',str(端口),'''],
bufsize=bufsize,
stdin=子流程.PIPE,
stdout=子流程.PIPE,
stderr=subprocess.STDOUT,
外壳=假)
除例外情况外,错误:
“打印”无法运行ssh命令!(“+str(err)+”)”
sys.exit()
我建议您看看Python-LibSSH2:这肯定会解决您的问题:好的。所以,可能是我的问题不清楚。这个答案告诉我如何访问命令行中给出的命令。我的问题是,是否有一种方法可以将password作为ssh的参数之一,这样ssh就不会再次提示输入密码了。否则,我可以对python代码做哪些修改,以使用命令行中给出的密码,这样ssh在登录远程设备时不会要求输入密码。@KalyanamRajashree-我刚才给了你关于sshpass的提示!令人惊叹的!他工作得像个奇迹。谢谢。