SSH Automatization

Материал из KLUG
Перейти к: навигация, поиск

Автоматизация ssh средствами python


paramiko - классная либа для ssh,
указав пароль один раз - посещаешь все серверы,
как и сценарии экспект, но еще проще, мне нравится

#!/usr/bin/python2.7
import paramiko, getpass

def pollEnv(host, user, pass, cmd):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  try:
    ssh.connect(host, username=user, password=pass, timeout=5)
  except:
    print('Cant connect to ' + host)
    return None

  # выполняем команду...
  stdin, stdout, stderr = ssh.exec_command(cmd)
  if stdout.channel.recv_exit_status() == 0:
    while True:
      result = stdout.read() ## читаем ответ
      if not result:
        break
      print host + ': ' + result ## TODO: лучше возвращать, чем печатать
  ssh.close()

# ssh логин
username = 'HypnoToad'
password = getpass.getpass('Please enter ' + username + "'s password: ")

# вот так можно проверить время на серверах server1.domain.org - server50.domain.org
cmd = '/bin/date'
for n in xrange(1,51):
  try:
    hostname = 'server' + str(n) + '.domain.org' 
    pollEnv(hostname, username, password, cmd)
  except:
    print 'cant connect to ' + hostname
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты