Форум сайта python.su
0
Суть проблемы: нужен скрипт на python, который бы заходил на множество серверов и выполнял некие команды. При этом список серверов должен хранится в некоем файле рядом.
Написал примерно следующее:
#!/usr/bin/env python # -*- coding:utf-8 -*- import sys import paramiko import os hosts = open("hosts.txt","r").readlines() def my_connection(line): try: ssh = paramiko.SSHClient() ssh.connect(line, username='my_login', key_filename="/home/my_homedir/.ssh/id_rsa") ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) stdin, stdout, stderr = ssh.exec_command('uptime') output = stdout.readlines() print output except paramiko.AuthenticationException, e: print(e) sys.exit(0) except paramiko.BadHostKeyException, e: print(e) sys.exit(0) except Exception, e: print(e) sys.exit(0) hosts = open("hosts.txt","r").readlines() for line in hosts: line.strip() line = str(line) print line my_connection(line)
(-2, 'Name or service not known')
Отредактировано lomach (Янв. 15, 2013 17:17:51)
Офлайн
0
Убрали try и except.
Сейчас ошибка:
Traceback (most recent call last): File "./file_parser.py", line 38, in ? my_connection(line) File "./file_parser.py", line 16, in my_connection ssh.connect(line, username='my_username', key_filename="/home/my_homedir/.ssh/id_rsa") File "/usr/lib/python2.4/site-packages/paramiko/client.py", line 278, in connect for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM): socket.gaierror: (-2, 'Name or service not known')
Офлайн
20
Всё таки было бы не безполезно взглянуть на вывод, а то так мы оказываемся в менее выгодном положении чем вы, что бы разгадать эту тайну вселенной. Не спортивное поведение, уважаемый :-). И как там “отдельная переменная” выглядит, которая в коде работает, а в “hosts.txt” нет?
..bw
Офлайн
0
line = ‘test.mydomain.ru’
Офлайн
0
Посмотрите в сторону fabric, намного лучше подходит для таких задач.
Офлайн
0
Сдался и сделал на bash.
Офлайн
0
Написал скрипт для выполнения Вашей задачи, http://up24x7.com.ua/archives/290 – по ссылке Вы можете найти листинг программы и как его использовать.
Офлайн