Найти - Пользователи
Полная версия: Скрипт цикличного обхода серверов по SSH (mod paramiko)
Начало » Python для новичков » Скрипт цикличного обхода серверов по SSH (mod paramiko)
1 2
belodemon
Доброго времени! Ниже скрипт проверки существования пользователя на серверах, айпишники которых берутся из файла 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()
PooH
Потому, что у вас в цикле только три строчки
for line in f_open:
ip = line.rstrip()
print ip
client.connect(ip, username=user, password=pwd)
все остальное вне цикла. ОТСТУПЫ ЗНАЧИМЫ!!!
скрипты лучше писать не путем длительного гугления, а путем чтения документации.

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

ЗЫ: а я для таких вещей пользую fabric, построен поверх paramiko и гораздо удобнее.
Огромное за помощь! Не сомневайтесь, читаем помаленьку Ж), чтоб не плодить тем, подправил основное сообщение, может и с этим поможете?
PooH
Ну как-то так:
s = o.read()
if s:
print s #ну и все остальное тут печатать
В o у вас перенаправляется стандартный вывод. Если он ничего не нашел он будет пустой, так что выводим только непустые.
А в e у вас перенаправляется stderr, его вообще можно не трогать.

ЗЫ: Сообщения задним числом править тут не принято. Их же не только вы читаете. А теперь мой первый ответ непонятно к чему относился.
belodemon
Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?
igor.kaist
belodemon
Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?
смотрите win32api (из пакета pywin32)
belodemon
А как записать вывод внешней команды в файл?
        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
программа выходит без ошибок но в файле ничего не появляеться, файл онткрыт на чтение в начале скрипта.
belodemon
igor.kaist
belodemon
Спасибо, очень помогли! Может подскажете еще возможно ли написать подобный код для проверки существования Windows пользователей на Win серверах. В какую сторону копать?
смотрите win32api (из пакета pywin32)
Код пишу на Linux, модулей не нашел, нашел только внешнюю программу winexe, работает подобно pstools для Windows.
bazooka
belodemon
А как записать вывод внешней команды в файл?
http://docs.python.org/library/subprocess.html
belodemon
http://docs.python.org/library/subprocess.html
Спасибо, жаль только в стандартном наборе модулей у версии 2.3 под RHEL 4.5(update) нет почему то модуля subprocess, уже добавил paramiko еще и subprocess придется прикручивать…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB