linux Bash脚本的进程栏

0g0grzrc  于 2023-08-03  发布在  Linux
关注(0)|答案(1)|浏览(119)

我有一个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'
}


请帮助我修改或修改代码。
先谢谢你,
维贾伊

7fhtutme

7fhtutme1#

关于“while代码块”,没有进度条代码也能正常工作。- 你的问题中的函数(如你在问题中所示)不可能正确运行,因为while read循环正在阅读$1,但你调用函数时没有参数。

$ foo() { while read line; do echo "$line"; done < "$1"; }
$ foo
-bash: : No such file or directory

字符串
提出一个包含minimal reproducible example的新问题,以便我们可以在您需要更多时进一步帮助您。

相关问题