Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2011 17:35:25

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

Доброго времени! Ниже скрипт проверки существования пользователя на серверах, айпишники которых берутся из файла hosts.
Как можно оптимизировать скрипт чтобы он выдавал только те айпи адреса на которых есть искомый пользователь?

#!/usr/bin/python
## IMPORT MODULS SECTION
from paramiko import SSHClient
from paramiko import AutoAddPolicy
import sys, time
from threading import Thread
import paramiko
######################################################################
client = paramiko.SSHClient()
client.load_system_host_keys()
f_open = open("hosts", 'r')
ssh = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())
user = 'user'
pwd = 'password'
usr = raw_input("input username to watch: ")
cmd = "grep %s /etc/passwd" % usr
for line in f_open:
ip = line.rstrip()
client.connect(ip, username=user, password=pwd)
time.sleep(1)
i, o, e = client.exec_command(cmd)
print "#######################################################"
print 'monitoring ip is: %s searching user is: %s' % (ip, usr)
print ""
paramiko.util.log_to_file('param.log')
print ""
print o.read()
print ""
print e.read()
print ""
print "#######################################################"
client.close()
sys.exit()



Отредактировано (Янв. 12, 2011 18:28:31)

Офлайн

#2 Янв. 12, 2011 18:11:31

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

Потому, что у вас в цикле только три строчки

for line in f_open:
ip = line.rstrip()
print ip
client.connect(ip, username=user, password=pwd)
все остальное вне цикла. ОТСТУПЫ ЗНАЧИМЫ!!!
скрипты лучше писать не путем длительного гугления, а путем чтения документации.

ЗЫ: а я для таких вещей пользую fabric, построен поверх paramiko и гораздо удобнее.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Янв. 12, 2011 18:31:08

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

PooH
Потому, что у вас в цикле только три строчки
for line in f_open:
ip = line.rstrip()
print ip
client.connect(ip, username=user, password=pwd)
все остальное вне цикла. ОТСТУПЫ ЗНАЧИМЫ!!!
скрипты лучше писать не путем длительного гугления, а путем чтения документации.

ЗЫ: а я для таких вещей пользую fabric, построен поверх paramiko и гораздо удобнее.
Огромное за помощь! Не сомневайтесь, читаем помаленьку Ж), чтоб не плодить тем, подправил основное сообщение, может и с этим поможете?



Офлайн

#4 Янв. 12, 2011 18:54:25

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

Ну как-то так:

s = o.read()
if s:
print s #ну и все остальное тут печатать
В o у вас перенаправляется стандартный вывод. Если он ничего не нашел он будет пустой, так что выводим только непустые.
А в e у вас перенаправляется stderr, его вообще можно не трогать.

ЗЫ: Сообщения задним числом править тут не принято. Их же не только вы читаете. А теперь мой первый ответ непонятно к чему относился.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Янв. 12, 2011 18:57:23)

Офлайн

#5 Янв. 13, 2011 12:31:34

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?



Офлайн

#6 Янв. 13, 2011 13:10:41

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

belodemon
Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?
смотрите win32api (из пакета pywin32)



Офлайн

#7 Янв. 13, 2011 14:02:16

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

А как записать вывод внешней команды в файл?

        for line2 in f_open2:
ip2 = line2.rstrip()
print ip2
cmd_win = "/usr/bin/winexe -U user%%pass \/\/%s \'net user\'" % ip2
print cmd_win
os.system(cmd_win)
sys.stdout = file('out_log', "w")
єто кусочек кода в котором я пытаюсь записать в файл out_log информацию из внешней команды : cmd_win = “/usr/bin/winexe -U user%%pass \/\/%s \'net user\'” % ip2
программа выходит без ошибок но в файле ничего не появляеться, файл онткрыт на чтение в начале скрипта.



Отредактировано (Янв. 14, 2011 18:49:08)

Офлайн

#8 Янв. 15, 2011 09:35:34

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

igor.kaist
belodemon
Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?
смотрите win32api (из пакета pywin32)
Код пишу на Linux, модулей не нашел, нашел только внешнюю программу winexe, работает подобно pstools для Windows.



Офлайн

#9 Янв. 15, 2011 10:06:21

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

belodemon
А как записать вывод внешней команды в файл?
http://docs.python.org/library/subprocess.html



Офлайн

#10 Янв. 16, 2011 23:31:03

belodemon
От:
Зарегистрирован: 2011-01-12
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Скрипт цикличного обхода серверов по SSH (mod paramiko)

http://docs.python.org/library/subprocess.html
Спасибо, жаль только в стандартном наборе модулей у версии 2.3 под RHEL 4.5(update) нет почему то модуля subprocess, уже добавил paramiko еще и subprocess придется прикручивать…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version