我试过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
&#xA;&#xA;def,111.222.333.444 < / p>&#xA;&#xA;
看起来我正面临一个错误,&#xA;语法错误接近意外令牌 f1'&#xA;
读取f1 f2 in $ (cat LNodeInput.txt);'&#xA;我也用其他几种方法尝试了它,但仍然会抛出错误。
答案 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