Вопрос больше целей, ориентированных, чем в частности к упомянутым технологиям, поэтому я просто собираюсь решить проблему в соответствии с моим духом. Я собираюсь использовать 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.
Предположим, что xml находится в file.xml
, просто сделайте:
sed -r 's/("base64">)([[:graph:]]+)/\1'"`grep -oP '"base64">\K[[:graph:]]+' file.xml | base64 -d`"'/g' file.xml
Это компактный regex, который будет выполнять задачу. Позволь мне разбить его и объяснить.
Сначала я выбираю последовательность 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}
}
И это работает.