Ожидайте сценарии - читающий из файлов и принимающий ввод данных пользователем

sed -ne '/^[aA]$/!i\' -e failed -e 's//worked/p;q' </dev/tty
0
20.05.2015, 13:48
2 ответа

Вопрос больше целей, ориентированных, чем в частности к упомянутым технологиям, поэтому я просто собираюсь решить проблему в соответствии с моим духом. Я собираюсь использовать Python.

Re: Выпуск № 1:

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

Вы не хотите, чтобы вы не хотели использовать IP-адреса из кроме скрипта - а скорее, а скорее вы хотите проанализировать iPaddresses из файла с помощью Python и запустить одну и ту же ожидающую команду для каждого IP-адреса.

Итак, вам нужно будет записать ожидаемую команду с iPaddress, являющейся переменной, так что для каждой iPaddress в вашем цикле вы назначаете другую iPaddress для этой переменной и выполнить команду ожидания.

Что касается функциональности «ждут», посмотрите на библиотеку «PEXPECT»: это модуль Python, который обнародовал ваши сценарии Python, ожидают, что функциональность. (См. Этот ответ, который содержит пример и ссылки на другие документы / примеры: https://stackoverflow.com/a/1160553/1248361 ). Давайте немного немного немного:

, глядя на примере в исходящей ссылке, примечание. Ожидаемая последовательность начинается с «« »

Child = pexpect.spawn ('Некоторые команды, которые требуют пароля') Child.expect («Введите пароль») Child.sendline («пароль»)

»« » Вы можете легко заменить этот строковый аргумент на метод PEXPECT.spawn с PEXPECT.spawn («некоторая команда, которая требует пароля, который требует iPaddress в качестве опции '+ iPaddress_Variable)

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

Как это (это псевдо код):

def edfunction_function (ipaddress_Variable): pexpect.spawn ('Некоторые команды, которые требуют пароля' + ipaddress_variable) Child.expect («Введите пароль») Child.sendline («пароль») Child.expect ..... (вот где вы берете и делаете то, что нужно сделать на удаленной машине)

(извините за форматирование, Pre и Code не делал то, что я надеялся)

С этим функциями определена, остальное легко.

Просто петлю через вашу iPaddress и позвоните в функцию, как этот код PSuedo:

для iPaddress в IPFile: vegne_function (ipaddress)

Проблема номер два Я бы также обрабатывал через Python.

0
28.01.2020, 02:51

Compact Script

Предположим, что xml находится в file.xml , просто сделайте:

sed -r 's/("base64">)([[:graph:]]+)/\1'"`grep -oP '"base64">\K[[:graph:]]+' file.xml | base64 -d`"'/g' file.xml 

Это компактный regex, который будет выполнять задачу. Позволь мне разбить его и объяснить.

Break Down

Сначала я выбираю последовательность base64, используя grep, и декодирую ее:

grep -oP '"base64">\K[[:graph:]]+' file.xml | base64 -d

Я мог бы сохранить это в переменной:

baseString=`grep -oP '"base64">\K[[:graph:]]+' file.xml | base64 -d`

Затем используйте sed , чтобы заменить base64 декодированным рядом, сохраненным в переменной:

sed -r 's/("base64">)([[:graph:]]+)/\1'"$baseString"'/g' file.xml
-121--174707-

Можно использовать комбинацию tar и ssh , например:

tar cvzf - folder/ | ssh -C user_name@host_name "cd ~/; tar xvzf -"
-121--52095-

Я вернулся в «Исследуя Ожидание» и обнаружил, что, видимо, если какое-то ожидание не дает результата, то ожидание видит, что как Конец Файла (eof), и выходит из сценария тоже. Итак, я просто добавил:

expect {
{eof} {action_here}
}

И это работает.

1
28.01.2020, 02:51

Теги

Похожие вопросы