Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2013 17:14:18

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

Суть проблемы: нужен скрипт на 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)

Есть коннект к серверу, если задать отдельно переменную line.
Файл парсится и выводится его содержимое.
Все вместе не работает. Выдает ошибку:
(-2, 'Name or service not known')
ОС RHEL 5.5
python 2.4




Django 1.8, БД MySQL 6
Debian Linux 7.0

Отредактировано lomach (Янв. 15, 2013 17:17:51)

Офлайн

#2 Янв. 16, 2013 08:53:34

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

Убрали 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')




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#3 Янв. 16, 2013 10:43:41

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Скрипт, создающий коннекты по ssh

Всё таки было бы не безполезно взглянуть на вывод, а то так мы оказываемся в менее выгодном положении чем вы, что бы разгадать эту тайну вселенной. Не спортивное поведение, уважаемый :-). И как там “отдельная переменная” выглядит, которая в коде работает, а в “hosts.txt” нет?

..bw



Офлайн

#4 Янв. 16, 2013 12:36:11

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

line = ‘test.mydomain.ru’




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#5 Янв. 16, 2013 15:18:23

myarik
Зарегистрирован: 2012-11-20
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

Посмотрите в сторону fabric, намного лучше подходит для таких задач.

Офлайн

#6 Янв. 16, 2013 20:50:54

lomach
От:
Зарегистрирован: 2012-01-28
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

Сдался и сделал на bash.




Django 1.8, БД MySQL 6
Debian Linux 7.0

Офлайн

#7 Фев. 1, 2013 17:30:46

myarik
Зарегистрирован: 2012-11-20
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт, создающий коннекты по ssh

Написал скрипт для выполнения Вашей задачи, http://up24x7.com.ua/archives/290 – по ссылке Вы можете найти листинг программы и как его использовать.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version