首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell NET-SNMP的Bash脚本

PowerShell NET-SNMP的Bash脚本
EN

Stack Overflow用户
提问于 2016-08-31 23:14:51
回答 1查看 651关注 0票数 1

我在将bash中的脚本更改为powershell时遇到问题,该脚本如下:

代码语言:javascript
复制
#! /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,因为我们需要文件的位置,但我似乎可以让它工作,我这样做:

代码语言:javascript
复制
$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“命令,它可以很好地工作,但我在这里的脚本部分遇到了麻烦。

希望你能帮助我。

致以敬意,

EN

回答 1

Stack Overflow用户

发布于 2016-09-01 00:54:29

尝试下面的代码(这还没有经过测试,因为我没有snmpget,但该方法可以与其他命令行应用程序一起使用):

代码语言:javascript
复制
$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行关闭循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39253324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档