Я пытаюсь создать скрипт, который будет автоматически регистрировать меня на определенном удаленном устройстве (назовем его fw).«Команда» немного сложна, так как мы выполняем вход с защищенного сетевого сервера, и для входа в систему доступны сотни таких файлов.
Я создал файл с двумя разделенными параметрами (команда и имя)«#», первый параметр - это строка «command» с пробелами (то есть: «sudo --user ....»), которую я хочу поместить (echo) в исполняемый файл с именем «name» (имяустройство, к которому я хочу подключиться).
Моя логика была изначально:
for line in $(awk -F# '{print $1, $2}' list.txt), do touch $2; && echo "$1 > $2" && chmod +x $2; done
Мой конец должен создать x файлов с именем "$ name", каждый из которых будет содержать только одну строку"$ command" и быть "исполняемым".
Я пробовал несколько вещей, чтобы сделать эту работу.Я могу перебирать файл без особых проблем, используя for
, while
и даже [[ -n $name ]]
, но это дает мне только одну переменную и не разбивает строку на две нужные мне "$command"
и "$name"
.Даже $1
и $2
подойдет для моих целей ...
Во время тестирования:
$ while IFS=# read -r line; do echo "$line"; done < list
sudo --user xxxxxxxxxxxxxx#yyyyyyyyy
sudo --user xxxxxxxxxxxxxx#yyyyyyyyy
sudo --user xxxxxxxxxxxxxx#yyyyyyyyy
даже при использовании IFS = # для разделения строки $ - не удаляет"#", как и ожидалось.
for-looping:
$ for line in $(cat list); do echo $line; done
sudo --user xxxxxxxxxxxxxx
yyyyyyyyy
sudo --user xxxxxxxxxxxxxx
yyyyyyyyy
sudo --user xxxxxxxxxxxxxx
yyyyyyyyy
Попытка расширить до:
bin$ for line in $(cat list); do awk -F# '{print $1, $2}' $line; done
awk: fatal: cannot open file ` xxxxxxxxxxxxxxxxx' for reading (No such file or directory)
awk: fatal: cannot open file `yyyyyyyyy
sudo --user xxxxxxxxxxxxxxxxx' for reading (No such file or directory)
awk: fatal: cannot open file `yyyyyyyyy
sudo --user xxxxxxxxxxxxxxxxx' for reading (No such file or directory)
Я хотел бы проанализировать (цикл) черезfile - разделите пармы и создайте $ name с помощью $ command внутри и chmod + x $ name, чтобы получить исполняемый файл, который автоматически зарегистрирует меня на узле "$ name".