使用批处理文件SSH到多台机器



我有大量的Linux设备,我希望能够SSH进入并更改网络掩码。我想创建一个批处理文件来做到这一点,这样我就可以导出IP地址列表,然后运行批处理来更改网络掩码。

我希望我的脚本是这样的:

$user = "username"
$pass = "password"
dir /b cmd.exe -arp -a>List.txt
for /f "Tokens=1 Delims= " %%a in (List.txt) do (
echo SSH <IP ADDRESS from List.txt> $user $pass
echo sudo ifconfig eth0 netmask 255.255.255.192
echo exit
)

我怎样才能使它工作?我的思路对吗?

你很接近了。然而,批处理有一些细微的差别,对于习惯于*nix shell脚本的人来说,这似乎是违反直觉的。

变量需要用set命令设置,并且=符号的两边不能有空格。这是因为在批处理中允许在变量名中包含空格。认真。

变量被称为%var%而不是$var,但是在设置值时不使用符号。

你不需要使用cmd.exe来调用arp;这是一个完全有效的批处理命令。由于arp -a输出的格式化方式,您将希望缩小范围。Find(或findstr)和grep最接近。

set user="username"
set pass="password"
arp -a|find "Interface">List.txt
for /f "tokens=1" %%a in (List.txt) do (
    SSH %user%@%%a 'sudo ifconfig eth0 netmask 255.255.255.192'
)

还应该注意的是,Windows没有本地安装SSH客户端,因此您将不得不找到第三方解决方案。

最新更新