2017-06-21 11 views
0

シェフがいる場合はチェックする必要があります。それを手動で行います。私は以前にはPythonを使ったことがないし、明日に行くまでは実際にテストすることはできません。正しい軌道に乗っていればフィードバックを求めています。私はすべてのIPアドレスをテキストファイルにダンプし、シェフをインストールする必要があるものを保存します。ssh経由でサーバーに接続し、シェフがインストールされているかどうかを確認し、インストールされていないサーバーを記録する

import pxssh 
import getpass 
CheckIT = str("command not found") 

for line in open('ServerList.txt','r').readlines(): 

try:                
s = pxssh.pxssh() 
hostname = raw_input('line ') 
username = raw_input('username ') 
password = getpass.getpass('password: ') 
s.login (hostname, username, password) 
s.sendline ('sudo su -') # run a command 
s.prompt()    # match the prompt 
s.sendline ('chef-client') 
s.prompt() 
if CheckIT == readline(self,size=-1) 
with open("ServersToUpdate.txt", "a") as myfile: 
myfile.write(hostname) 


except pxssh.ExceptionPxssh, e: 
print "pxssh failed on login." 
print str(e) 
+0

"シェフがインストールされているかどうか"という単独のチェックは、それ以上の手順がなければ意味をなさない。シェフがさらにインストールしているノードを持っている、または持っていないノードで何をしたいですか? –

+0

インストールされていない場合は、それ以上インストールする必要はありません。 – InsertNameHere

+0

なぜ各ノードをすぐにブートストラップしないのですか? –

答えて

1

大丈夫ですので、実際にシェフを実行したくないと思われます。また、これまでの15年間の書き込み方法を修正するためにsudo -iがあったとしても、それを必要としませんsudo su -を使用することはありません。 chef-client --versionを実行して失敗した場合は、シェフがインストールされていないものとします。

関連する問題