Скрипт использующий переменную из файла .txt
Добрый вечер всем!
Передо мной стоит задача смены mac адресов на моем роутере со стороны LAN (не WAN), т.е. порта, к которому подключен компьютер мой компьютер. У меня есть некоторая база данных этих мак-адресов. команда для изменения мак-адреса на lan порту выглядит так: nvram set et0macaddr=МАК адрес на который меняем nvram commit reboot Соответственно, подскажите пожалуйста, если кто в курсе, адрес роутера: 192.168.1.1 (Asus), логин допустим admin, пароль: admin Как реализовать такую штуку через telnet: 1. подключение к роутеру по ip, логин пароль заданы 2. подается команда, описанная выше (только мак идет как произвольная переменная, которую скрипт берет из файла c:/mac.txt) 3. задача успешно выполнена. Соответственно в файле mac.txt находятся несколько мак-адресов, каждый начинается с новой строчки, важно чтобы они менялись полностью произвольно. P.S. нужно для личных целей, ничего плохого, связь с внешним миром полностью отсутствует, все дела происходят только между моими компьютером и моим роутером. |
XXXp, попробуйте для начала автоматизировать установку одного адреса:
- скачайте утилиту PLink.exe; - создайте файл команд ("plink.job"): Код:
admin Код:
plink -v -telnet 192.168.1.1 <plink.job |
Спасибо, но команды в файле .job пролетают слишком быстро, между ними бы паузу. А то запускаю файл, он быстро прокручивает все, а потом только роутер спрашивает логин, или логин успевает отработать, но останавливается на пароле...
|
Цитата:
Код:
plink -v -telnet 192.168.1.1 <plink.job >plink.log |
Лог выглядит примерно так:
admin admin nvram set et0macaddr=Мак nvram commit rebootь^AWL-0011223344B0 login: т.е. получается команды посылаются до того, как роутер успел их запросить ключики увы ничего не дают, мне кажется помогла бы самая простая пауза в полсекунды... |
паузы тут не предусмотрено, попробуйте вставить в начале пустые строки (соответствует нажатию ENTER)
какая модель роутера? |
dlink dir-320 перепрошитый в Asus WL500g
|
|
Неа, при запуске сначала идет содержание файла plink.job, а затем сразу роутер предлагает ввести логин. Файл .job пробовал заменять на .txt результат один в один, может проблема в этом, .job должен как-то иначе восприниматься?
PHP код:
|
Парадокс, через ssh получилось подключиться (используя опции -l и -pw
но команды так и не отсылаются... Может что-то не так с расширением .job? |
XXXp, попробуйте вместо перенаправления ввода "<plink.job" ключ "-m plink.job"
|
К сожалению, ситуация не изменилась.. А через ssh команды как-нибудь можно иначе отправить?
|
XXXp, можете попробовать ещё на всякий случай другое приложение: Telnet Script Executor, если с «plink.exe» не срослось.
|
Спасибо, но не получается(.
Прям странно, у меня есть bat файл, который подключает к роутеру через ssh без проблем и роутер ждет команды, но как её дать автоматически в самом бат файле или подключением аналогичных файлов я не знаю( |
Цитата:
кстати, в справке описан способ сохранения параметров SSH-соединения (п.7.2.2) |
через телнет так и не получается, сначало выводит в командной строке содержание файла, а только затем спрашивает логин, т.е. компьютер не связывает содержание файла как команды или загружает их до того, как роутер спросит логин.
Вот такой vbs скриптик вроде справляется Set oShell = WScript.CreateObject("WScript.Shell") oShell.Run "telnet.exe 192.168.1.1" WScript.Sleep 1000 oShell.SendKeys "admin" & chr(13) WScript.Sleep 1000 oShell.SendKeys "admin" & chr(13) WScript.Sleep 1000 oShell.SendKeys "nvram set et0macaddr=00:11:22:33:77:B5" & chr(13) WScript.Sleep 1000 oShell.SendKeys "nvram commit" & chr(13) WScript.Sleep 1000 oShell.SendKeys "reboot" & chr(13) Помогите пожалуйста привести его в божеский вид, я просто изменил под свои цели другой скрипт. Он не выходит после окончания. И вопрос как реализовать то что я говорил вначале темы (произвольный МАК и файла c:/mac.txt)? |
Хотя возможно это не подойдет...
С telnet вопрос так и открыт... второй день вожусь, без результата... пробовал по всякому |
Цитата:
Цитата:
Код:
Set wss = WScript.CreateObject("WScript.Shell") |
Спасибо, вроде нормально работает, а подскажите по поводу вопроса использования МАК-адреса, взятого из файла c:/mac.txt, где записаны несколько мак адресов и каждый начинается с новой строчки. Маки берутся в произвольном порядке
|
XXXp, забыл сказать, что скрипт расcчитан всё-же на запуск из CMD-косоли:
Код:
CScript /Nologo Script.VBS Цитата:
Код:
Set wss = WScript.CreateObject("WScript.Shell") |
Спасибо большое, чуть позже протестирую и отпишусь! Ещё раз спасибо
|
Все работает! Спасибо большое ещё раз!
|
Подскажите пожалуйста тогда ещё один небольшой момент:
1. есть команда plink -v -ssh -l admin -pw admin 192.168.1.1 она подключает к роутеру и 2. есть скрипт на роутере, который запускается командой /usr/local/etc/script.sh помогите сделать vbs или ещё какой скрипт, который бы просто подключался, вводил команду и отключался Спасибо! |
XXXp, по аналогии поста #18 не выходит?..
Код:
Set wss = WScript.CreateObject("WScript.Shell") |
У меня он подвисал почему-то, видимо из-за того, что не было строчки foo.StdIn.WriteLine("LOGOUT")
Спасибо! |
Подскажите ещё пожалуйста такой момент: как сделать, чтобы вместо "WScript.Echo(foo.StdOut.ReadAll())" он сохранял эти данные в лог файл c:\log.txt
спасибо |
Цитата:
Код:
CScript /Nologo Script.VBS >c:\log.txt |
Спасибо!
|
Время: 20:45. |
Время: 20:45.
© OSzone.net 2001-