【问题标题】:shell script to read one line and process line by lineshell脚本读取一行并逐行处理
【发布时间】:2021-06-02 17:29:11
【问题描述】:

我有以下文件,其中服务器的 fqdn 和该服务器的用户在同一行中。 猫服务器.txt

server1 user1 \n
server2 user2 \n
server3 user3 \n

我正在编写一个 shell 脚本,我可以一次使用一个服务器来执行 ssh 并在那里执行一些命令并移动到下一个服务器。例如,ssh 到 server1 和 sudo 到 user1 并做这些事情,而不是移动到 server2。 所以我写在下面并尝试调整但没有找到解决方法。它不工作。请帮忙。

ROOT_PATH=/home
SERVERS_FILE=servers.txt

while IFS= read -r line; do
        server=`cut -d' ' -f1 $line`
        user=`cut -d' ' -f2 $line`
        echo $server ::: $user
        echo "grep -rw lookeupword $ROOT_PATH/$user" | ssh $server "sudo -iu $user bash"
done <<< "$SERVERS_FILE"

【问题讨论】:

  • 请注意,每个服务器和它的用户都在一个新的行上。
  • 你说的不工作是什么意思?
  • 意味着当尝试从第一个变量 $server 在主机上进行 ssh 时它会给我错误。检查下面。 ROOT_PATH=/home SERVERS_FILE=servers.txt 而 IFS= 读取 -r 行; do # echo $line server=$(echo -n ${line} | awk '{print $1}') user=$(echo -n ${line} | awk '{print $2}') echo $server :: : $user echo "grep -rw findtheword $ROOT_PATH/$user" | ssh $server "sudo -iu $user bash" done
  • 错误信息应该写在问题中,而不是在评论中......

标签: shell line script


【解决方案1】:

如果您不介意使用单衬,这里有一个简单的

首先创建.ssh/config 文件并为您拥有的每个Host 设置配置。这是我的(部分)

Host docker
    HostName X.X.X.X
    port XXXX
    user root

Host nginx
    HostName X.X.X.X
    port XXXX
    user root

Host dw
    HostName X.X.X.X
    port XXXX
    user root

所以 ssh(ing) 到 dockernginxdw 没有密码是可能的(使用公钥/私钥)。
第二次循环遍历您拥有或想要运行命令的Host

xargs -I xxx ssh xxx ip -br a < hosts

这是一个简单的截图:

【讨论】:

  • 这是可能的,但我已经为所有服务器设置了配置文件。但我想使用具有服务器名称和用户的文件在同一行登录,并用空格分隔。我想通过使用服务器名和用户切换到每个服务器上运行查找命令。
【解决方案2】:

这会起作用。

#!/usr/bin/env bash
ROOT_PATH=/home
SERVERS_FILE=servers.txt

while IFS= read -r line; do
        server=$(echo -n ${line} | awk '{print $1}')
        user=$(echo -n ${line} | awk '{print $2}')
        echo $server ::: $user
        #echo "grep -rw lookeupword $ROOT_PATH/$user" | ssh $server "sudo -iu $user bash"
done < "$SERVERS_FILE"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多