【发布时间】:2022-01-14 12:46:34
【问题描述】:
我们有一个文本文件中的服务器和本地用户列表。 我们需要定期更改这些密码。
cat host.txt
user1@server_test
user2@server_test
usera@server_dev
userb@server_dev
usera1@server_pro
userb1@server_pro
我写了以下脚本来修改密码
#!/bin/bash
for i in $(cat host.txt);
do
userid=`echo $i | awk -F"@" '{print $1}'`
server=`echo $i | awk -F"@" '{print $2}'`
ssh $server 'echo -e "tempP@ass\ntempP@ass" | sudo passwd `echo $userid`'
done
此脚本的问题:在远程服务器上变量$userid 的值不可见(我知道原因)
将此值传递给远程服务器的最佳方法是什么?
【问题讨论】:
-
你为什么要使用
echo?不要在反引号中运行echo $userid,只需写$userid。但是如果你想在本地主机上扩展它,你不能使用单引号。
标签: linux bash ssh server script