我的测试套件有问题。我使用机器人框架和 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 ?我试过ssh -e
switch ,我不想改变 ssh 客户端,我只需要一个通用的解决方案。
例如在下面的代码中使用 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
谢谢你。