所以我对 bash 了解不多,需要一些专业人士的帮助。我正在尝试运行这样的脚本:
filename='file1'
while read p; do
ssh -p 2222 $p 'who -b' | awk '{print $(NF-1)" "$NF}' >> file2*
Run Code Online (Sandbox Code Playgroud)
我想要制作的是一个脚本,它遍历文件 1 中的所有地址,以查看它们上次重新启动的时间,然后是文件 2 中的答案。
问题是它只通过第一个地址而不是另一个。
第一个地址有一个密码,我需要输入才能继续该过程。这可能是问题,还是我指定了 file1 中的每一行,还是我一开始就做错了?
computer1:~$ ssh -p 2222 computer2@192.x.x.x 'who -b' | \
> awk '{print $(NF-1)" "$NF}' >> textfile.txt
Run Code Online (Sandbox Code Playgroud)
此代码帮助我确定 computer2 上次启动的时间并将信息放入名为 textfile.txt 的文本文件中。但是,如果我想在同一命令中询问计算机 2 和计算机 3 的相同内容,然后将信息放入文本文件中呢?如何在同一个命令中询问多台计算机?
谢谢!
这个想法是让这个脚本运行而不需要输入主机的任何密码(写在Hosts.txt文件中)。现在,当我运行这个时,我得到一个Permission denied, please try again.答案。
#!/bin/bash
[[ -z "${1}" ]] && OUT_FILE="WhereTheAnswearIsGoing.txt" || OUT_FILE="$1"
[[ -z "${2}" ]] && IN_FILE="Hosts.txt" || IN_FILE="$2"
while IFS= read -r host; do
indication="$(sshpass -pfootbar ssh -p 2222 -o StrictHostKeyChecking=no -n "$host" 'who -b' | awk '{print $(NF-1)" "$NF}')"
printf '%-14s %s\n' "$indication" "$host" >> "$OUT_FILE"
done < "$IN_FILE"
Run Code Online (Sandbox Code Playgroud)
对不起,如果这个问题不清楚,但我对这些事情了解不多。