小编Lud*_*vig的帖子

While 循环只处理 ssh 命令的第一项

所以我对 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 中的每一行,还是我一开始就做错了?

ssh bash

4
推荐指数
2
解决办法
4308
查看次数

如何通过ssh通过同一个命令询问多台计算机

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 的相同内容,然后将信息放入文本文件中呢?如何在同一个命令中询问多台计算机?

谢谢!

ssh command-line

3
推荐指数
1
解决办法
305
查看次数

尝试运行使用“sshpass”的脚本时权限被拒绝

这个想法是让这个脚本运行而不需要输入主机的任何密码(写在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)

对不起,如果这个问题不清楚,但我对这些事情了解不多。

ssh permissions command-line bash

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

ssh ×3

bash ×2

command-line ×2

permissions ×1