nameless Опубліковано 4 Грудня, 2009 в 10:34 #1 Опубліковано 4 Грудня, 2009 в 10:34 Є на борді програмісти? Необхідна допомога. Потрібно написати скрипт, який би телнетився на деякий адрес, передавав би деяку команду, і повертав би результат виконання в stdout. Як таке реалізувати? Зокрема цікавить саме керування потоком stdin телнету з sh-скрипта.
imp13 Опубліковано 4 Грудня, 2009 в 16:34 #2 Опубліковано 4 Грудня, 2009 в 16:34 не на шелі, а на пітоні використовуємо таку процедурку для бекапа конфіга:import os, sys, getopt, timeimport pexpect, redef fetch_nx300_conf(host): try: child = pexpect.spawn ('telnet %s' % host) child.expect ('>') except Exception, e: # print str(e) sys.stderr.write(child.before) os._exit(1) child.sendline('user\r\n') child.expect ('assword: ') child.sendline('pass\r\n') child.expect (':') child.sendline('ms\r\n') child.expect('Delete following strings including this one') output = child.before output = output.replace('\x0d','') # convert line feed from DOS to UNIX output = output.split('\n') nsg_re = re.compile('((^D P)|(^F S)|(^C R)|(^A P)|(^W F)|(^S\s))(.*)') for line in output: m = nsg_re.search(line) if m: print m.group() child.sendline ('ws tn:0\r\n')результат роботи вона видає в консоль (в даному випадку конфіг NSG NX-300)в shell-файлі fetchnsgconf.py -h nx1.lt.ic > $DESTDIR/lutsk-nx1.conf && echo nx1.lt.ic
nameless Опубліковано 4 Грудня, 2009 в 23:32 Автор #3 Опубліковано 4 Грудня, 2009 в 23:32 Ні ні, потрібно саме на шелі. На перлі чи на С я і сам можу написати, там легко працювати з двосторонніми пайпами, а от шел - бяка =(
Адміністратори serega Опубліковано 5 Грудня, 2009 в 05:13 Адміністратори #4 Опубліковано 5 Грудня, 2009 в 05:13 expect
nameless Опубліковано 5 Грудня, 2009 в 10:42 Автор #5 Опубліковано 5 Грудня, 2009 в 10:42 expectВсе геніальне - просто, респект =) =) =)
Рекомендовані повідомлення
Заархівовано
Ця тема знаходиться в архіві та закрита для подальших відповідей.