2016-08-31 19 views
0

は、スクリプトは次のようである:私のLinux環境には、bashスクリプト

#! /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 

正常に動作しますが、私はNET-SNMPをインストール私は「snmpgetコマンド」それが正常に動作しますが、私はとのトラブルを持っているコマンドを実行する場合

$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} 

:私たちはするファイルを必要としますが、私はそれは私がこれをしなかった動作させるように見えることができる場所のWindows Serverがありますので、ここでスクリプト部分。

あなたが私を助けてくれることを願っています。

よろしく、

+0

'$ IPS =(" 10.96.90.2 "、" 172.27.41.202 "、" 172.27.41.203 ")つまり**文字列**の配列です。そして、ファイルにリダイレクトしてください: '... >> $(" $ IPVAR "+" _ "+" $ TIEMPO.txt ")' – JosefZ

答えて

0

は(私は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行目は$IPS配列内の各IPを繰り返し処理するforeachループを開始します。

行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 &のファイル内容を作成または上書きします。

行11はループを閉じます。

+0

このコードを実行した後、出力ごとにファイルごとにファイルを作成する方法は? –

+0

は、IP(および日付)ごとに1つのファイルに出力するようにコードを更新しました。 – TechSpud