shell 读取一行并逐行处理的脚本
shell script to read one line and process line by line
我有以下文件,其中服务器的 fqdn 和该服务器的用户在同一行。
猫 servers.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"
这会起作用。
#!/usr/bin/env bash
ROOT_PATH=/home
SERVERS_FILE=servers.txt
while IFS= read -r line; do
server=$(echo -n ${line} | awk '{print }')
user=$(echo -n ${line} | awk '{print }')
echo $server ::: $user
#echo "grep -rw lookeupword $ROOT_PATH/$user" | ssh $server "sudo -iu $user bash"
done < "$SERVERS_FILE"
如果您不介意使用 一个衬垫,这里有一个简单的衬垫
首先 为每个 Host
创建 .ssh/config
文件和设置配置。这是我的(一部分)
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) 到 docker, nginx, dw没有密码是可能的(使用 public/private 键)。
第二个循环那些Host
你有或想要运行命令:
xargs -I xxx ssh xxx ip -br a < hosts
这是一个简单的截图:
我有以下文件,其中服务器的 fqdn 和该服务器的用户在同一行。 猫 servers.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"
这会起作用。
#!/usr/bin/env bash
ROOT_PATH=/home
SERVERS_FILE=servers.txt
while IFS= read -r line; do
server=$(echo -n ${line} | awk '{print }')
user=$(echo -n ${line} | awk '{print }')
echo $server ::: $user
#echo "grep -rw lookeupword $ROOT_PATH/$user" | ssh $server "sudo -iu $user bash"
done < "$SERVERS_FILE"
如果您不介意使用 一个衬垫,这里有一个简单的衬垫
首先 为每个 Host
创建 .ssh/config
文件和设置配置。这是我的(一部分)
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) 到 docker, nginx, dw没有密码是可能的(使用 public/private 键)。
第二个循环那些Host
你有或想要运行命令:
xargs -I xxx ssh xxx ip -br a < hosts
这是一个简单的截图: