我有大量的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客户端,因此您将不得不找到第三方解决方案。