获取日期信息的python + auto ssh进程

时间:2011-11-18 09:39:47

标签: python

我需要在我的linux 5.3上执行

   ssh [Linux machine red hat 5.3] date

为了获得日期结果,在ssh期间需要回答以下问题

  1. (是/否)? - >是
  2. 密码: - > diana_123
  3. 然后我会得到日期结果

    请告知如何使用python执行此自动化过程? (在我的Linux上我有 Python 2.2.3)

    python脚本应该获取IP地址编号,并自动执行ssh到103.116.140.151并返回日期结果

         as -->  Fri Nov 18 11:25:18 IST 2011
    

    手动过程的例子:

      # ssh 103.116.140.151 date
        The authenticity of host '103.116.140.151 (103.116.140.151)' can't be established.
        RSA key fingerprint is ad:7e:df:9b:53:86:9f:98:17:70:2f:58:c2:5b:e2:e7.
        Are you sure you want to continue connecting (yes/no)? yes
        Warning: Permanently added '103.116.140.151' (RSA) to the list of known hosts.
        root@10.116.10.151's password: 
    
        Fri Nov 18 11:25:18 IST 2011
    

3 个答案:

答案 0 :(得分:2)

您可以通过将StrictHostKeyChecking = no参数传递给ssh来跳过主机密钥检查:

ssh -oStrictHostKeyChecking=no 103.116.140.151 date

我认为不可能对密码做同样的事情。绕过SSH密码提示的正确方法是使用受限制的无密码密钥:有关详细信息,请参阅here

答案 1 :(得分:2)

最简单的方法是configure passwordless logins。基本上,使用

创建一个本地ssh密钥对
ssh-keygen -t rsa

并将公钥放入$HOME/.ssh/authorized_keys 103.116.140.151。如果您不关心远程主机的密钥,请添加-oStrictHostKeyChecking=no ssh选项。

或者,使用SSH库,例如Paramiko

import paramiko
ssh = paramiko.SSHClient()
# Uncomment the following line for the equivalent of -oStrictHostKeyChecking=no
#ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('103.116.140.151', username='user', password='diana_123')
stdin, stdout, stderr = ssh.exec_command("date")
date = stdout.read()
print(date)

答案 2 :(得分:0)

如果您无法使用基于密钥的无密码登录,则可以在Linux上使用expect包。它给出了您选择问题的答案。

你可以使用python中的pexpect这个包。