2015-12-22 4 views
0

У меня есть сценарий, который будет подключаться к списку имен хостов, запускать команду и печатать выходные данные на экране. Я знаю, как отправить вывод в 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() 

ответ

0

Вы могли бы сделать что-то вроде:

with open("output-" + host, 'w') as f: 
    f.write(stdout) 

вместо печати на стандартный вывод workon функции

+0

я пытался, но им получать отступа ошибки. Тем не менее новый для сценариев, так я уверен, его что-то легкое Защиту 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

+0

извинения для форматирования предыдущего комментария. Все еще пытаюсь понять, как вставить код в комментарий. – JoeScripter

Смежные вопросы