попробуйте
for i in $(</flushhosts)
do
echo "Mypwd" | sshpass -p 'Mypwd' ssh -t username@$i sudo /sbin/iptables --flush
done
Mypwd
(в echo Mypwd
) сделает его путь к sudo $ ( flushhosts)
эквивалентен $ (cat / flushhosts)
эквиваленту "cat / flushhosts" about cat << «ЕОФ» || Mypwd
1) cat << "EOF"
Это будет читать строки, пока не встретится слово EOF, и весь текст будет передан cat. сюда входит слово done
.
2) || Mypwd
, если cat вернет ненулевое значение, то Mypwd (как команда) будет выполнен.
Поскольку слово EOF не найдено, когда bash достигает конца документа, for ... do
не приближается к done
, следовательно, синтаксическая ошибка.
Я думаю, это не то, что вам нужно.
синтаксис
cat <<EOF
hello world
EOF
называется здесь документом, это способ предоставить данные в сценарии оболочки.
В итоге я установил фильтр для предотвращения регистрации этих сообщений со следующей строкой поверх /etc/rsyslog.conf
:msg, contains, "Connect UDP socket" ~