Стандартный ввод данных недоступен для ваших удаленных команд. Что вы можете сделать, так это использовать флаг bash "-s" для чтения команд со стандартного ввода:
Из руководства bash:
-s If the -s option is present, or if no arguments remain after
option processing, then commands are read from the standard
input. This option allows the positional parameters to be set
when invoking an interactive shell.
Итак, это должно делать то, что вы хотите:
#!/bin/bash
#input server names line by line in server.txt
cat server.txt | while read line
do
sshpass -p password ssh root@$line bash -s << EOF
hostname
uname -r
EOF
done
См. Также: https: / /stackoverflow.com/questions/305035/how-to-use-ssh-to-run-shell-script-on-a-remote-machine
121---40354-
Параметр MaxAuthTries определяет максимальное количество попыток аутентификации, разрешенное для одного соединения. Когда количество отказов достигает половины этого значения, регистрируются дополнительные отказы. Это должно быть установлено на 1.
Попробуйте это,
awk "/""$pat1""/,/""$pat2""/" test.log | grep -v "$pat3" > Error.bk
$pat1
и $pat2
более простым способом:
grep -e "$pat1\|$pat2" filename > resultfile