4 linux shell scripting bash shell-script
这对我来说应该是显而易见的,但我已经被困了一段时间。
我正在尝试编写一个非常简单的 bash 循环来获取服务器列表,从中检索一些特定信息,并将输出保存到基于启动机器上的主机地址的文件中。
代码目前看起来像:
#!/bin/bash
SERVER_LIST=/path/to/hosts
while read REMOTE_SERVER
do
{
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command'
} > "$REMOTE_SERVER"
done < $SERVER_LIST
Run Code Online (Sandbox Code Playgroud)
上面的结果只为我列表中的第一个主机生成一个输出文件,然后退出。
为了阻止一些更明显的解决方案,Ansible 等不是一种选择,因为这是一个非常受限制的环境。出于同样的原因,使用多 shell 或 tmux 也不是一种选择(我一次只能从我的主机登录一个系统)。
所以,如果有人能确切地告诉我我是如何搞砸的,我将不胜感激!
代替
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command'
Run Code Online (Sandbox Code Playgroud)
经过
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command' </dev/null
Run Code Online (Sandbox Code Playgroud)
也防止从 stdin ( $SERVER_LIST) 进行ssh 读取。或者使用ssh的选项-n。
-n: 从 /dev/null 重定向标准输入(实际上,阻止从标准输入读取)。
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |