我在将bash中的脚本更改为powershell时遇到问题,该脚本如下:
#! /bin/sh
for IPVAR in 172.27.41.202 172.27.41.203
do
TIEMPO=$(date +"%m-%d-%y")
FILENAME=${IPVAR}_${TIEMPO}
date +"%c" >> $FILENAME.txt
snmpget -v 2c -c public $IPVAR -mALL 1.3.6.1.4.1.41413.1.1.0 1.3.6.1.4.1.41413.1.4.0 1.3.6.1.4.1.41413.1.2.0 1.3.6.1.4.1.41413.1.3.0 1.3.6.1.4.1.41413.10.3.4.1.1.1 1.3.6.1.4.1.41413.10.3.4.1.2.1 1.3.6.1.4.1.41413.10.3.4.1.3.1 1.3.6.1.4.1.41413.10.3.4.1.4.1 1.3.6.1.4.1.41413.10.3.4.1.5.1 1.3.6.1.4.1.41413.10.3.4.1.6.1 1.3.6.1.4.1.41413.10.3.4.1.7.1 1.3.6.1.4.1.41413.10.3.4.1.8.1 1.3.6.1.4.1.41413.10.3.4.1.9.1 1.3.6.1.4.1.41413.10.3.4.1.10.1 >> $FILENAME.txt
done在我的Linux环境中工作得很好,但我在Windows服务器上安装了NET-SNMP,因为我们需要文件的位置,但我似乎可以让它工作,我这样做:
$IPS = (10.96.90.2)
$TIEMPO = get-date -f yyyy-MM-dd
Foreach ($IPVAR in $IPS) {snmpget -v 2c -c public -m ALL $IPVAR 1.3.6.1.4.1.41413.1.1.0 1.3.6.1.4.1.41413.1.4.0 1.3.6.1.4.1.41413.1.2.0 1.3.6.1.4.1.41413.1.3.0 1.3.6.1.4.1.41413.10.3.4.1.1.1 1.3.6.1.4.1.41413.10.3.4.1.2.1 1.3.6.1.4.1.41413.10.3.4.1.3.1 1.3.6.1.4.1.41413.10.3.4.1.4.1 1.3.6.1.4.1.41413.10.3.4.1.5.1 1.3.6.1.4.1.41413.10.3.4.1.6.1 1.3.6.1.4.1.41413.10.3.4.1.7.1 1.3.6.1.4.1.41413.10.3.4.1.8.1 1.3.6.1.4.1.41413.10.3.4.1.9.1 1.3.6.1.4.1.41413.10.3.4.1.10.1 >> "$IPVAR_$TIEMPO".txt}如果我只运行"snmpget“命令,它可以很好地工作,但我在这里的脚本部分遇到了麻烦。
希望你能帮助我。
致以敬意,
发布于 2016-09-01 00:54:29
尝试下面的代码(这还没有经过测试,因为我没有snmpget,但该方法可以与其他命令行应用程序一起使用):
$IPS = @('172.27.41.202', '172.27.41.203')
$IPS | ForEach-Object {
$snmpgetParams = @(
'-v', '2c' ,'-c' ,'public' ,'-m' ,'ALL', $_, '1.3.6.1.4.1.41413.1.1.0 1.3.6.1.4.1.41413.1.4.0 1.3.6.1.4.1.41413.1.2.0 1.3.6.1.4.1.41413.1.3.0 1.3.6.1.4.1.41413.10.3.4.1.1.1 1.3.6.1.4.1.41413.10.3.4.1.2.1 1.3.6.1.4.1.41413.10.3.4.1.3.1 1.3.6.1.4.1.41413.10.3.4.1.4.1 1.3.6.1.4.1.41413.10.3.4.1.5.1 1.3.6.1.4.1.41413.10.3.4.1.6.1 1.3.6.1.4.1.41413.10.3.4.1.7.1 1.3.6.1.4.1.41413.10.3.4.1.8.1 1.3.6.1.4.1.41413.10.3.4.1.9.1 1.3.6.1.4.1.41413.10.3.4.1.10.1'
)
$TIEMPO = Get-Date -f yyyy-MM-dd
$FILENAME="$_`_$TIEMPO`.txt"
snmpget @snmpgetParams | Set-Content $FILENAME -Force
}第1行声明了一个IP地址数组。
第2行启动了一个foreach循环,该循环将遍历$IPS数组中的每个IP。
第3、4、5行创建要传递给snmpget命令的参数数组。$_参数是环路中的当前IP地址。
第7行用日期设置$TIEMPO变量。
第8行使用IP地址设置$FILENAME变量,后跟一个下划线,然后是日期。反引号`告诉PowerShell不要将以下字符作为前面变量名的一部分。示例文件名:172.27.41.202_2016-08-31.txt
第10行调用snmpget命令。@snmpgetParams 'splats‘参数数组。输出被输送到Set-Content命令中,该命令使用Force选项创建或覆盖该IP & date的文件内容。
第11行关闭循环。
https://stackoverflow.com/questions/39253324
复制相似问题