【问题标题】:Python Executing remote ssh commandPython执行远程ssh命令
【发布时间】:2015-03-29 03:48:48
【问题描述】:

我正在编写一个 python nagios 检查来检查文件上次更新时的时间戳,但是我需要检查脚本中的两个单独的主机,所以我想使用远程 ssh 命令将时间戳返回到stdout 并使用它来确保脚本在过去 24 小时内完成,因为当脚本完成时它会触及文件。

当我从命令提示符运行命令时,它可以工作,但是当我从我的 python 代码运行它时,它不会将输出返回到我的程序。

Grants-MacBook-Pro:test GrantZukel$ ssh ubuntu@hostname sudo ls -la /home/ubuntu/ | grep code_regen_complete

The authenticity of host 'ec2-54-144-160-238.compute-1.amazonaws.com (54.144.160.238)' can't be established.

RSA key fingerprint is hidden.

Are you sure you want to continue connecting (yes/no)? yes

Failed to add the host to the list of known hosts (/Users/GrantZukel/.ssh/known_hosts).

-rw-r--r-- 1 root   root       0 Jan 29 17:23 code_regen_complete

Grants-MacBook-Pro:test GrantZukel$ 

蟒蛇是:

def get_code_time(): 
    p = subprocess.Popen(['ssh','ubuntu@hostname', '"sudo ls -la /home/ubuntu/ | grep code_regen_complete"'], stdout=subprocess.PIPE)
    out, err = p.communicate()
    m = re.search('\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}', out)
    return m.group(0) 

但是,当我使用调试器时,out 或 err 变量完全为空。有什么想法吗?

【问题讨论】:

  • 不相关,但是如果你以ubuntu登录,为什么需要sudo才能列出/home/ubuntu
  • 你为什么不直接ls -l /home/ubuntu/code_regen_complete

标签: python linux ssh


【解决方案1】:

您需要在命令中传递shell=True

p = subprocess.Popen(['ssh','ubuntu@hostname', '"sudo ls -la /home/ubuntu/ | grep code_regen_complete"'], stdout=subprocess.PIPE,shell=True)

【讨论】:

  • 感谢这项工作,我仍然需要修改一些东西,但这最终有助于感谢。
  • 还有一个问题
  • sudo ssh ubuntu@hosts sudo git log -1 --date=iso | grep ^日期:| awk '{print $2','$3, $4}' 我如何针对 /var/www/vhosts/webdirectory 执行该命令
  • local_repo_date = compare_codebase("sudo ssh ubuntu@hostname 'cd /var/www/vhosts/bazumedia.com/; sudo git log -1 --date=iso | grep ^Date'") 我想通了nvm
【解决方案2】:

去掉ls 命令周围的双引号:

p = subprocess.Popen(['ssh','ubuntu@hostname', 'sudo ls -la /home/ubuntu/code_regen_complete'], stdout=subprocess.PIPE)

您可能还想试试Fabric

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2017-02-08
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多