shell脚本ssh命令无法正常工作

时间:2014-06-30 14:56:51

标签: linux shell loops ssh

我有一小部分服务器,我试图在每台服务器上添加一个用户。我可以单独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出了什么问题?

1 个答案:

答案 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。