[英]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.