У меня есть сценарий, который будет подключаться к списку имен хостов, запускать команду и печатать выходные данные на экране. Я знаю, как отправить вывод в txt-файл, но я хотел бы настроить его таким образом, чтобы результат на каждом хосте создавал собственный файл txt. В идеале, я бы хотел, чтобы файл был сохранен как host1.txt, host2.txt и т. Д. Открыт для других идей, если есть более легкий/умный способ выполнить это.Сохранить вывод в нескольких текстовых файлах
import sys, os, string, threading
import getpass
import paramiko
cmd = "sh vl bri"
lanid = raw_input("Enter your uname: ")
#get password info
def enterPassword():
while True: # repeat forever
pwd = getpass.getpass('Enter password:')
password_again = getpass.getpass('Confirm password:')
if pwd != password_again:
print 'Password and confirmation do not match.Please try again!!'
else:
return pwd
pwd = enterPassword()
outlock = threading.Lock()
def workon(host):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=lanid, password=pwd)
stdin, stdout, stderr = ssh.exec_command(cmd)
print stdout.read()
stdin.flush()
with outlock:
print stdout.readlines()
def main():
hosts = ['host1', 'host2', 'host3', ] # etc
threads = []
for h in hosts:
t = threading.Thread(target=workon, args=(h,))
t.start()
threads.append(t)
for t in threads:
t.join()
main()
я пытался, но им получать отступа ошибки. Тем не менее новый для сценариев, так я уверен, его что-то легкое Защиту workon (хост): SSH = paramiko.SSHClient() ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy()) ssh.connect (хост, имя пользователя = lanid, пароль = PWD) STDIN, STDOUT, STDERR = ssh.exec_command (CMD) #print stdout.read() \t \t с открытой ("output-" + хост, 'W'), как F: \t \t f.write (stdout) stdin.flush() с отключением: print stdout.readlines() – JoeScripter
извинения для форматирования предыдущего комментария. Все еще пытаюсь понять, как вставить код в комментарий. – JoeScripter