Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт использующий переменную из файла .txt

Ответить
Настройки темы
Любой язык - [решено] Скрипт использующий переменную из файла .txt

Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: XXXp
Дата: 24-04-2011
Добрый вечер всем!
Передо мной стоит задача смены 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. нужно для личных целей, ничего плохого, связь с внешним миром полностью отсутствует, все дела происходят только между моими компьютером и моим роутером.

Отправлено: 01:41, 22-04-2011

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


XXXp, попробуйте вместо перенаправления ввода "<plink.job" ключ "-m plink.job"

Отправлено: 17:50, 22-04-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


К сожалению, ситуация не изменилась.. А через ssh команды как-нибудь можно иначе отправить?

Отправлено: 18:01, 22-04-2011 | #12


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


XXXp, можете попробовать ещё на всякий случай другое приложение: Telnet Script Executor, если с «plink.exe» не срослось.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:02, 22-04-2011 | #13


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, но не получается(.
Прям странно, у меня есть bat файл, который подключает к роутеру через ssh без проблем и роутер ждет команды, но как её дать автоматически в самом бат файле или подключением аналогичных файлов я не знаю(

Отправлено: 19:26, 22-04-2011 | #14


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата XXXp:
А через ssh команды как-нибудь можно иначе отправить? »
я не имею опыта работы с SSH на PLINK, там посложней будет и больше опций по настройке, вроде еще файл ключа сессии должен использоваться, но с SSH простое перенаправление команд по идее и не должно работать - только через ключ "-m"

кстати, в справке описан способ сохранения параметров SSH-соединения (п.7.2.2)

Отправлено: 19:32, 22-04-2011 | #15


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


через телнет так и не получается, сначало выводит в командной строке содержание файла, а только затем спрашивает логин, т.е. компьютер не связывает содержание файла как команды или загружает их до того, как роутер спросит логин.

Вот такой 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)?

Отправлено: 19:46, 22-04-2011 | #16


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Хотя возможно это не подойдет...
С telnet вопрос так и открыт... второй день вожусь, без результата... пробовал по всякому

Отправлено: 01:26, 24-04-2011 | #17


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата XXXp:
Хотя возможно это не подойдет... »
почему?... по поводу вопроса:
Цитата XXXp:
мне кажется помогла бы самая простая пауза в полсекунды »
этот вариант на VBS работает в моём случае: подключение, выполнение HELP и выход:
Код: Выделить весь код
Set wss = WScript.CreateObject("WScript.Shell")
Set foo = wss.Exec("plink -v -telnet 192.168.1.1")

WScript.Sleep(500)
foo.StdIn.Write("admin" & vbLF & "password"& vbLF)
WScript.Sleep(500)
foo.StdIn.Write("HELP"& vbLF)
foo.StdIn.WriteLine("LOGOUT")

WScript.Echo(foo.StdOut.ReadAll())
P.S. думаю уже понятно, что реализация зависит от роутера - если он не примет имя/пароль, запросит повторно и скрипт "зависнет"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:42, 24-04-2011 | #18


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, вроде нормально работает, а подскажите по поводу вопроса использования МАК-адреса, взятого из файла c:/mac.txt, где записаны несколько мак адресов и каждый начинается с новой строчки. Маки берутся в произвольном порядке

Отправлено: 23:28, 24-04-2011 | #19


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


XXXp, забыл сказать, что скрипт расcчитан всё-же на запуск из CMD-косоли:
Код: Выделить весь код
CScript /Nologo Script.VBS
Цитата XXXp:
Маки берутся в произвольном порядке »
это как раз просто:
Код: Выделить весь код
Set wss = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' Получение случайного MAC
Randomize
Set foo = fso.OpenTextFile("c:\mac.txt", 1)
arr = Split(foo.ReadAll, vbCrLf)
mac = arr(Int((UBound(arr)+1)*Rnd))
' Подключение и отправка команд на роутер
Set foo = wss.Exec("plink -v -telnet 192.168.1.1")
WScript.Sleep(500)
foo.StdIn.Write("admin" & vbLF & "admin"& vbLF)
WScript.Sleep(500)
foo.StdIn.Write("nvram set et0macaddr="& mac & vbLF)
WScript.Sleep(500)
foo.StdIn.Write("nvram commit"& vbLF)
WScript.Sleep(500)
foo.StdIn.WriteLine("reboot")
' Чтение и вывод лога
WScript.Echo(foo.StdOut.ReadAll())
P.S. последняя строка в файле НЕ должна заканчиваться <ENTER>, иначе последний MAC будет пустым
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:15, 25-04-2011 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Скрипт использующий переменную из файла .txt

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Чтение содержимого текстового файла в переменную kosmopes Скриптовые языки администрирования Windows 2 11-03-2011 12:58
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. OSArev Скриптовые языки администрирования Windows 2 30-01-2011 11:58
CMD/BAT - [решено] Ввод данных в переменную из txt-файла river123 Скриптовые языки администрирования Windows 1 10-01-2011 18:43
CMD/BAT - [решено] передать переменную из файла в другой через call csusha Скриптовые языки администрирования Windows 2 22-09-2010 19:32
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42




 
Переход