簡體   English   中英

Python腳本來SSH遠程計算機並在cron作業中運行此腳本

[英]Python script to ssh remote machine and run this script in cron job

我想為SSH遠程計算機編寫python腳本並運行命令netstat -antp | grep httpd netstat -antp | grep httpd在Cron作業中運行此腳本。

在這里,我為httpd服務進行grepping,並檢查端口號(例如80)。 只有一台遠程計算機可以具有80個其余部分,應該具有不同的端口,例如8888或8080。

我想在運行python腳本時作為參數的遠程計算機列表。

以下是我的代碼段:

import subprocess
import sys

machine_list= sys.argv[1]

for machine in machine_list:
    command = "sudo netstat -antp | grep httpd"
    ssh = subprocess.Popen(["ssh", "%s" % machine, command],
                            shell=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    result = ssh.stdout.readlines()

問題是每次我運行時都要求我提供遠程計算機的密碼。 如果在cron中運行,我無法手動輸入密碼。 該怎么辦?

如果您以運行cron任務的用戶身份登錄,則應該能夠設置基於ssh鍵的登錄名。

首先,如果尚未生成ssh公鑰和私鑰,則需要它們:

ssh-keygen -t rsa -b 2048

然后,您可以使用ssh-copy-id

ssh-copy-id user@hostname

這會將使用ssh-keygen生成的公鑰放入“主機名”上遠程用戶的authorized_keys文件中。 如果使用ssh-agent,它將僅提示您輸入密鑰的密碼(如果已設置),則不提示您。

查看使用ssh連接的paramiko模塊也可能很有用。 http://www.paramiko.org/

您正在使用sudo運行netstat,這也可能會提示您輸入密碼。 使用已發布示例中的內容,您應該從netstat -antp獲得想要的答案,而無需sudo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM