我有一小部分服务器,我试图在每台服务器上添加一个用户。我可以单独ssh到每个服务器并运行命令。
sudo /usr/sbin/useradd -c "Arun" -d /home/amurug -e 2014-12-12 -g users -u 1470 amurug
我编写了一个脚本来遍历列表并运行此命令,但是我遇到了一些错误。
#!/bin/bash
read -p "Enter server list: " file
if [[ $file == *linux* ]]; then
for i in `cat $file`
do
echo "creating amurug on" $i
ssh $i sudo /usr/sbin/useradd -c "Arun" -d /home/amurug -e 2014-12-12 -g users -u 1470 amurug
echo "==============================================="
sleep 5
done
fi
当我运行脚本时,它不会执行命令。
creating amurug on svr102
Usage: useradd [options] LOGIN
Options:
我的脚本中的ssh crommand出了什么问题?
答案 0 :(得分:1)
试试这个脚本:
#!/bin/bash
read -p "Enter server list: " file
if [[ "$file" == *linux* ]]; then
while read -r server
do
echo "creating amurug on" "$server"
ssh -t -t "$server" "sudo /usr/sbin/useradd -c Arun -d /home/amurug \
-e 2014-12-12 -g users -u 1470 amurug"
echo "==============================================="
sleep 5
done < "$file"
fi
根据man bash
:
-t
强制伪tty分配。这可以用于在遥控器上执行任意的基于屏幕的程序,这可以是非常有用的,例如,实现菜单服务时。多个-t选项强制tty分配,即使ssh没有本地tty。