Предполагая, что у вас есть настроенные ключи root ssh и локально сгенерированные шаблоны, stat с этим;
for HOST in $HOSTS ; do
scp wifi-templates/* $HOST:/etc/NetworkManager/system-connections/
ssh $HOST 'U=$(ls -1 /home/ | head -n 1); perl -pi -e "s/(permissions=user:)you(:;)/$1'$U'$2/g" /etc/NetworkManager/system-connections/*'
done
Шаблоны;
while read L ; do
SSID=$(echo $L | cut -d ";" -f 1)
N=$(echo $L | cut -d ";" -f 2)
PASS=$(echo $L | cut -d ";" -f 3)
cp template $N
perl -pe 's/SSID/'$SSID'/g;s/PASS/'$PASS'/g' $N
done < AP.txt
*Этот код предназначен только для демонстрации. (Не тестировался и может потребовать настройки, чтобы он работал. )Пожалуйста, прочтите справочную страницу каждой команды перед использованием;
Конвейер, который вы показываете, по существу
sed expression | awk expression filename
Это будет запускать awk
в файле filename
, в то время как sed
ничего не делать, ожидая ввода от пользователя на его стандартном вводе (он будет читать то, что вы набрали на терминале в этот момент ).
Чтобы выйти из этого скрипта, просто нажмите Ctrl+D , чтобы сигнализировать об окончании ввода в процесс sed
. Когда sed
замечает, что читать больше нечего, он завершает работу и сценарий завершает работу (, так как именно это «останавливало» его ).
Ваш текущий скрипт более или менее эквивалентен запуску
awk expression filename
sed expression
... так как две команды не взаимодействуют друг с другом по каналу.
То, чем ты хочешь заниматься
sed expression filename | awk expression
Здесь sed
работает с файлом и отправляет результат на awk
для дальнейшей обработки. awk
запускается без имени файла, что означает, что он читает со своего стандартного ввода, который подключен к стандартному выводу sed
через конвейер.
В вашем случае вы хотите
sed 's/\xC2\xA0//g' filename.txt | awk '$1=="|"{if(f){print f" "$2;f=""}else{f=$2}}'
(Будет ли этот конвейер делать то, что вы хотите, или нет, я не знаю, но теперь, по крайней мере, процессы sed
и awk
будут передаваться правильно ).
ctrl -c отправляет сигнал «SIGINT», поэтому для отправки того же эффекта, что и ^C, используйте
kill -SIGINT
pid -из -скрипт -