繁体   English   中英

使用Popen的Python SSH

[英]Python SSH using Popen

面对这个问题,如何在默认情况下回答“是”来使用Popen ssh

The authenticity of host '`XXXXX`' can't be established.
ECDSA key fingerprint is SHA256:LA2RqbdzD8Uxgi36KWOM12giS9T+ceOQYhYjVKReMks.
Are you sure you want to continue connecting (yes/no)?

这就是我正在尝试的

for IP in ['10.32.253.250']:
    remoteCall = subprocess.Popen(["ssh", "co_user@"+IP, "sudo svstat /etc/sv/nagios_CheckDisk_Alertz_daemon",], stdout=subprocess.PIPE, stderr=subprocess.PIPE);
    Response, err = remoteCall.communicate()
    if(re.search("authenticity of host", Response)):
        stdin.write('yes')
    print IP + "  " +Response

不确定子流程是如何执行的,接下来是另一种方式,可能对您有所帮助。 仅供参考。

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("192.168.1.6", 22, "username", "password")
stdin, stdout, stderr = ssh.exec_command('ls') // your command here
content = stdout.readlines()
print content
ssh.close()

从手册页:

StrictHostKeyChecking

如果此标志设置为“ yes”,则ssh(1)将永远不会自动将主机密钥添加到〜/ .ssh / known_hosts文件,并且拒绝连接主机密钥已更改的主机。 尽管当/ etc / ssh / ssh_known_hosts文件维护不当或经常与新主机建立连接时,这可能会很烦人,但它可以最大程度地防止特洛伊木马攻击。 此选项强制用户手动添加所有新主机。 如果此标志设置为“ no”,则ssh会自动将新的主机密钥添加到用户已知的主机文件中。 如果此标志设置为“询问”,则只有在用户确认他们真正想要的操作之后,新的主机密钥才会添加到用户已知的主机文件中,并且ssh会

如果希望ssh / scp在没有提示的情况下自动接受新密钥,则可以将StrictHostKeyChecking设置为“ no”。 在命令行上:

scp -o StrictHostKeyChecking=no ...

您还可以启用批处理模式:

BatchMode

如果设置为“是”,密码短语/密码查询将被禁用。 此选项在没有用户提供密码的脚本和其他批处理作业中很有用。 参数必须为“是”或“否”。 默认为“否”。 如果使用BatchMode = yes,则ssh / scp将失败而不是提示(这通常是脚本的改进)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM