Подключитесь к серверу через ssh, проверьте, установлен ли chef, и запишите серверы, на которых он не установлен.

Мне нужно проверить множество серверов, если у них установлен chef (не спрашивайте). Я пытался автоматизировать это вместо того, чтобы делать это вручную. Я никогда раньше не использовал python, и я не могу проверить это, пока не пойду завтра, поэтому искал какую-то обратную связь, если я на правильном пути. Я полагаю, что я сваливаю все IP-адреса в текстовый файл, просматривая его и сохраните те, которые должны иметь установленного шеф-повара.

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)

1 ответ

Итак, вы, вероятно, не захотите запускать Chef как часть этого. Также никогда не используйте sudo su -Чтобы правильно написать, что за последние 15 лет sudo -i, но вам не нужно даже это. Просто беги chef-client --version и если это не удается, предположим, что Chef не установлен.

Другие вопросы по тегам