![]() |
Сохранение параметра в файл и обратное действие
Добрый вечер!
Есть вопрос, буду благодарен за любую помощь. Есть программа по смене MAC адреса, называется MacShift mac адрес меняется на произвольный (random) через bat файл такого содержания: start c:/macshift/macshift.exe -i "LocalNet" -r где LocalNet - соответственно название сети, и -r - параметр произвольной смены МАКа Возможно ли дописать данный бат файл, чтобы он сохранял каждый раз строчку такого содержания: mac=xxxxxxxxxxxx (соответственно измененный мак адрес) в файл c:/mac.txt И второй вопрос, обратный к первому Какой скрипт нужно написать, чтобы он(скрипт) брал строчку из файла c:/mac.txt содержания mac=xxxxxxxxxxxx и xxxxxxxxxxxx вставлял в скрипт как start c:/macshift/macshift.exe -i "LocalNet" -xxxxxxxxxxxx Спасибо ОГРОМНОЕ заранее! |
Как сделать не знаю, но предполагаю, что МАК можно после смены много откуда брать и сохранять
|
Более понятно описал необходимый скрипт!
За помощь в создании компенсирую финансами потраченное время (чтобы и вам было не накладно) Имеется программа macshift (по запросу могу выслать конечно) Смена произвольного Mac адреса в ней осуществляется через бат файл с содержанием: start c:/macshift/macshift.exe -i "LocalNet" -r где LocalNet - название локальной сети -r - проивольное изменение МАК адреса Соответственно, команда start c:/macshift/macshift.exe -i "LocalNet" -xxxxxxxxxxxx Меняет МАК на -xxxxxxxxxxxx Ну и, соответственно: Необходимо сделать следующий bat файл: Загружается c:/config.ini в нём находится строчка mac= Если строчка ПУСТАЯ, т.е. после = ничего нет (или вообще строчки нет, если так проще) То осуществляет команду start c:/macshift/macshift.exe -i "LocalNet" -r (произвольно меняем мак) и сохраняем получившийся mac в файл c:/config.ini в виде mac=новый мак (без тире и двоеточия) Если строчка НЕ ПУСТАЯ, т.е. mac=zzzzzzzzzzzz То осуществляем команду start c:/macshift/macshift.exe -i "LocalNet" -zzzzzzzzzzzz |
Неужели это нельзя реализовать?
Напоминаю, что постараюсь компенсировать потраченное время на создание скрипта |
О боже как всё сложно.
честно говоря, я ничего не понял(( |
свой macshift который будет использоваться тобой, скинь в тему, что бы быстрей тебе помогли.
|
Вложений: 1
Вот он!
|
У нас есть файл config.ini (его содержимое будет меняться естественно), изначально в нём нет строчки mac=xxx, т.е. он используется впервые для macshift
В этом случае (если нет mac=) Нам нужно выполнить команду start c:/macshift/macshift.exe -i "LocalNet" -r и записать в этот файл (config.ini) значение нового mac адреса в виде mac=новый мак адрес Если в файле config.ini уже присутствует строчка mac=zzz необходимо выполнить команду start c:/macshift/macshift.exe -i "LocalNet" -zzz и ничего больше никуда не записывать. Либо другой вариант того же, только гораздо более простой (для меня в том числе) Имеем два скрипта: Один записывает случайный mac в каждый из нескольких десятков-сотен файлов c:/configs/*.ini строчкой в виде mac=xxxxxxxxxxxx, причём запись случайного мака необходимо произвести по всем правилам, используемым в macshift (грубо команда -r для проги) Второй скрипт просто бы брал из файла c:/config.ini строчку mac=zzzzzzzzzzzz и запускал бы команду start c:/macshift/macshift.exe -i "LocalNet" -zzzzzzzzzzzz |
Abricosio, вот вам скрипт, программа macshift должна лежать в одной директории с ним (или в любом месте, которое прописано в PATH), местоположение ini-файла для записи укажете сами. Если его не существует по указанному пути, он создается.
Код:
@Echo Off |
Думаю не совсем всё как надо... По моему надо обратное действие ещё...
что бы мак в дальнейшем брался из конфига, если он там есть то уже выполнять команду Код:
mac=Тут значение уже вместо -r Цитата:
|
Цитата:
Перво-наперво, проверяем, есть ли вообще файл, заданный как конфигурационный. Если нету - создаем. Если внутри него нету ключа mac - дописываем пустое. Далее, считываем key-value значения из него с помощью функции :ReadKeyValue, при этом создаются переменные с нужными значениями. После проверяем, определена ли переменная mac - если определена, то запускаем macshift с этим mac-адресом. Если не определена - запускаем macshift, но с ключом -r, он устанавливает случайный мак-адрес, выбираем его знаачение из stdout с помощью конвеера и find, назначаем новое значение переменной mac и записываем в файл с помощью функции :WriteKeyValue |
всё понял почему не работал) Потому что автор не правильно написал... МАК вызывается
Код:
не так Автору) Что бы не запустался Код:
это |
root221, понял, спасибо. Я просто по синтаксису, предложенному автором написал, саму утилиту у себя не запускал из соображений безопасности, а виртуалку поднимать лень было. Исправил в скрипте.
|
Вроде все работает! Спасибо! Как только отключить диалог "нажмите кнопку для продолжения"?
И пришлите пожалуйста в личку вариант перевода Вам моей благодарности :) |
Код:
) Замени на Код:
) |
2Anonymоus
Спасибо большое, через личные сообщения не получается писать, говорит что у вас переполнен ящик) |
Да, так и есть, только что почистил. В последнее время часто пишут. Вам тоже спасибо, если понадобится помощь со скриптами - обращайтесь, помогу по мере возможностей.
|
Вылезла маленькая неувязочка в скрипте, он добавляет знак равенства "="
ко всем параметрам в файле ini в квадратных скобках, т.е. было [blabla] стало после работы скрипта [blabla]= из-за чего теперь не работает другая часть конфига. Не подскажите как решить данную проблему?) Спасибо |
Abricosio, поправил, теперь больше такого не будет. Вы просто не уточнили с самого начала, что в конфиге могут быть секции ini.
Код:
@Echo Off |
Спасибо большое!
|
Подскажите пожалуйста интересный момент выяснился, при записи МАКа программа режет предыдущий параметр, который содержит ссылку, как я понимаю из-за знака =
т.е. было <a href=ссылка и т.д. >, а стало заканчиваться просто <a href и обрываться С чем это может быть связано и как вылечить? Заранее СПАСИБО! ) |
Все ещё крайне актуально.. Помогите пожалуйста..
|
Время: 14:03. |
Время: 14:03.
© OSzone.net 2001-