批处理文件在多个服务器上运行

时间:2018-03-09 13:27:38

标签: batch-file

我有一组命令,我已经为其创建了批处理文件。现在我必须运行大约100台服务器。

怎么做?

我不想使用powershell,因为命令没有使用它。

以下是我的idrac6.bat内容:

racadm -r %1 -u %2 -p %3 config -g cfgipmilan -o cfgipmilanalertenable 1
racadm -r %1 -u %2 -p %3 config -g cfgIpmiLan -o cfgIpmiPetCommunityName WP!OME@Ro

racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.System.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.System.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Storage.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Storage.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Updates.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Updates.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Config.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Config.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Worknotes.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Worknotes.Warning -a none -n snmp

racadm -r %1 -u %2 -p %3 set idrac.snmp.alert.1.enable 1
racadm -r %1 -u %2 -p %3 set idrac.snmp.alert.1.destaddr %4

racadm set idrac.snmp.trapformat V2

对于执行命令的单个服务器IP I用户。

idrac6.bat <Server IP> username password > idrac6732018.txt

现在我需要在<Server IP>字段中传递整个服务器IP列表。

1 个答案:

答案 0 :(得分:0)

如果您的服务器IP地址在批处理文件旁边的文本文件中每行一个,那么以下实现可能会有所帮助:

@Echo Off
For /F "Delims=" %%A In (%1) Do Call :Sub %%A %2 %3 %4
Exit /B

:Sub
racadm -r %1 -u %2 -p %3 config -g cfgipmilan -o cfgipmilanalertenable 1
racadm -r %1 -u %2 -p %3 config -g cfgIpmiLan -o cfgIpmiPetCommunityName WP!OME@Ro

racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.System.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.System.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Storage.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Storage.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Updates.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Updates.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Config.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Config.Warning -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Worknotes.critical -a none -n snmp
racadm -r %1 -u %2 -p %3 eventfilters set -c idrac.alert.Worknotes.Warning -a none -n snmp

racadm -r %1 -u %2 -p %3 set idrac.snmp.alert.1.enable 1
racadm -r %1 -u %2 -p %3 set idrac.snmp.alert.1.destaddr %4

racadm set idrac.snmp.trapformat V2

您可以像这样运行它,正确更改文本文件的名称

idrac6.bat IPList.txt username password UNKNOWN > idrac6732018.txt

我使用了UNKNOWN,因为您的帖子中没有提到%4参数,请根据需要插入。

修改

您也可以保持idrac6.bat不变,并使用与此类似的命令提示行运行它,(显然来自正确的工作目录)

(For /F "Delims=" %A In (IPList.txt) Do @Call idrac6.bat %A username password UNKNOWN)>idrac6732018.txt