【问题标题】:shell script ssh command not workingshell脚本ssh命令不起作用
【发布时间】:2014-06-30 23:47:53
【问题描述】:

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

【问题讨论】:

    标签: linux shell loops ssh


    【解决方案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。

    【讨论】:

      最近更新 更多