为了账号安全,请及时绑定邮箱和手机立即绑定

SSHLibrary提示输入密码

SSHLibrary提示输入密码

狐的传说 2021-04-02 16:10:44
我的测试套件有问题。我使用机器人框架和python。我在python中创建了一个函数,该函数在远程Linux客户端中执行控制台命令。def purge_default_dns(device_ip):    ssh_val = "usr1@" + device_ip    command = "ctool dns | grep -v \"grep\" | awk \'{print $2}\'"    test = check_output(["ssh", ssh_val, "-p", "6022", command])该check_output()功能连接device_ip并执行命令。如果我尝试使用完全限定的域名(例如my.domain.io)进行连接,则会提示输入密码(该密码为空)。我按Enter键,命令会定期执行。是否有任何参数传递,例如出现密码提示时输入Enter?我尝试过ssh -eswitch,我不想更改ssh client,我只需要一个通用的解决方案。例如,在下面的代码中使用paramiko库,我可以创建一个paramiko SSHClient,它具有用于密码的参数并且不提示任何内容。虽然我现在不能使用paramiko,但我还需要SSHLirary来解决此问题。def send_ssh_command(device_ip , command):    hostname = device_ip    password = ""    username = "usr1"    port = 6022    try:        client = paramiko.SSHClient()        client.load_system_host_keys()        client.set_missing_host_key_policy(paramiko.WarningPolicy())        client.connect(hostname, port=port, username=username, password=password)        stdin , stdout , stderr = client.exec_command(command)        command_return_val = stdout.read()    finally:        client.close()    return command_return_val
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

为什么需要使用python,我在robotframework中使用以下代码来实现相同的目的:


[Arguments]    ${host}=${APP_SERVER}    ${username}=${APP_USERNAME}    ${password}=${APP_PASSWORD}

Open Connection    ${host}    timeout=2m

Login    ${username}    ${password}

${out}  ${err}  ${rc}=   Execute Command   cd ${PATH};ctool dns | grep -v \"grep\" | awk \'{print $2}\' *    return_stdout=True   return_stderr=True   return_rc=True

Should Be Equal   ${rc}  ${0}


查看完整回答
反对 回复 2021-04-13
  • 2 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号