使用while循环ssh到另一台机器

时间:2018-03-29 03:53:01

标签: linux shell ssh

我试过ssh到多个vms。我用于循环。我想获取用户名和IP并循环到多个VM。




  export IFS =“,”
 for read f1 f2 in $(cat sample.txt);
做sshpass -p'密码'ssh $ f1 @ $ f2“uname -a”;
已完成
  

&# xA;

sample.txt包含





abc,111.111.111.111





def,111.222.333.444 < / p>&#xA;&#xA;

看起来我正面临一个错误,&#xA;语法错误接近意外令牌 f1'&#xA; 读取f1 f2 in $ (cat LNodeInput.txt);'&#xA;我也用其他几种方法尝试了它,但仍然会抛出错误。

&#xA;

2 个答案:

答案 0 :(得分:1)

#!/bin/bash
while IFS="," read -r f1 f2
do
 sshpass -p 'password' ssh "$f1@$f2" "uname -a" < /dev/null ;
done < sample.txt
小心sample.txt应该将最后一行作为空行,否则它将不会读取它的最后一行。

修改

< /dev/null是阻止来自sample.txt的“吃”输入的ssh。否则,该命令仅ssh到第一个服务器。

答案 1 :(得分:0)

int c;
int spaces = 0;
while((c = getchar()) != EOF)
{
    if (c == ' ')
    {
        ++spaces;
        if (spaces == 3)
        {
            putchar('\n');
            spaces = 0;
        }
    }
    else
    {
        spaces = 0;
    }
}

就像你想要的那样你可以在完成之前添加..如果你想要在文件中收集的输出添加&gt;最后的文件1