我有一个测试套件的问题。我使用robot框架和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])
{{cd2>与函数^连接。如果我尝试使用一个完全限定的域名(例如my.domain.io
),那么我会得到一个密码提示(密码为空)。我按enter键,命令会定期执行。当密码提示出现时,是否有任何参数通过例如Enter?
我尝试了ssh -e
开关,我不想改变ssh客户端,我只需要一个通用的解决方案。在
例如,在下面的代码中使用paramiko库,我可以创建paramikoSSHClient
,它有一个password参数,不提示任何内容。虽然我现在不能使用paramiko,但我需要用SSHLirary来解决这个问题。在
谢谢。在
要想明白这一点,您需要的唯一解决方案是在命令行上将密码传递给默认的OS
ssh
客户机,并且不/不能安装任何库(paramiko等)来帮助您通过其他方式获得相同的结果?在我要问这个问题,因为robot框架的SSHLibrary提供了开箱即用的方法;您已经有了带有
paramiko
的python解决方案;而一般的linux解决方案是安装sshpass
package,并使用它传递值:因此,如果所有这些都不是一个选项,你就有两个选择-要么在}来传递它——这一个是我更喜欢的两个选项中的一个。在
SSH_ASKPASS
周围做点什么——这里是an article和一个示例,要么使用{这是一个非常好的SO answer,在
expect
周围有一个expect
脚本包装器。在您的方法中,您必须首先创建一个包含其内容的文件,在其上设置一个可执行标志,然后在check_output()
中调用该文件,并将密码“ssh”及其所有参数作为参数传递。在为什么需要使用python,我在robotframework中使用了以下代码:
相关问题 更多 >
编程相关推荐