我有一个bash脚本通过ssh在多个远程机器上运行一组命令($1 =远程ip列表文件)。我创建了一个函数(function 1),其中包含所有命令,并通过ssh在远程机器上调用。脚本运行良好。我正试图添加一个进度条与%的进程(连接远程机器一个接一个,做的工作)。我添加了代码,但它不工作
完整脚本:-
#!/bin/bash
read -p 'AMM_Username: ' uservar
read -sp 'AMM_Password: ' passvar
## Commands
function function1() {
echo ""
echo -e "Hostname $(hostname)"
echo -e "Uptime $(uptime)"
echo -e "Running Kernel $(uname -r)"
echo -e "Date $(date)"
echo -e "TimeZone $(basename $(ls -l /etc/localtime | grep -o '/usr/share/zoneinfo/.*'))"
echo ""
}
##
function run_remote_command() {
# Show progress bar before command is executed
echo -ne '##### (33%)\r'
sleep 1
while read -r server; do
sshpass -p "$passvar" ssh -q -n "$uservar@$server" "$(typeset -f); function1" > "output.txt"
else
echo "Server $server is not reachable."
fi
done < "$1"
# Show progress bar after command is executed
echo -ne '####################### (100%)\r'
echo -ne '\n'
}
run_remote_command
字符串
我得到的输出
+ run_remote_command
+ echo -ne '##### (33%)\r'
+ sleep 1 (33%)
Lin_check.sh: line 510: : No such file or directory
+ echo -ne '####################### (100%)\r'
+ echo -ne '\n'######## (100%)
型
第510行-> sshpass -p“$passvar”ssh -q -n“$uservar@$server”“$(typeset -f); function1”>“output.txt”
但这条线的工作与出过程条形码(下面给出).
function run_remote_command() {
# Show progress bar before command is executed
echo -ne '##### (33%)\r'
sleep 1
# Show progress bar after command is executed
echo -ne '####################### (100%)\r'
echo -ne '\n'
}
型
请帮助我修改或修改代码。
先谢谢你,
维贾伊
1条答案
按热度按时间7fhtutme1#
关于“while代码块”,没有进度条代码也能正常工作。- 你的问题中的函数(如你在问题中所示)不可能正确运行,因为
while read
循环正在阅读$1
,但你调用函数时没有参数。字符串
提出一个包含minimal reproducible example的新问题,以便我们可以在您需要更多时进一步帮助您。