2017-08-17 68 views
0

你能幫我將snmpget輸出分配給一個變量,然後將其寫入RESULTS文件。將snmpget輸出分配給一個變量

#!/bin/sh 

workingdir="/home/dperera/ping-tests" # LOG=$workingdir/RESULT.csv 

infile=$workingdir/RTR_LIST # while read device 

do 

#$device sysName.0 > /dev/null 
#if [ "$?" = "0" ] ; then  
    rtr = snmpget -v2c -c xxxxx $device mib-2.47.1.1.1.1.11.1 >> $LOG 
    echo "$device, $rtr" >> $LOG      
# fi 
done < $infile 
+0

你特別指的是'output' - 標準輸出,標準錯誤,兩者,返回碼? – jackarms

+0

當你只使用'echo'$ rtr「'而不是'echo'$ device,$ rtr」>> $ LOG'時會發生什麼?你的控制檯是否打印了你的'rtr'變量值? – Eos

回答

0

您可以使用tee它,tee會寫輸出到標準輸出和日誌文件。修改你的命令如下,將​​的輸出分配給rtr,並寫入$LOG

rtr=$(snmpget -v2c -c xxxxx $device mib-2.47.1.1.1.1.11.1 | tee -a $LOG) 

介意-atee將允許輸出追加到給定的$LOG,而不是覆蓋。

0

我敢打賭,以下命令行會返回一個錯誤代碼:

rtr = snmpget -v2c -c xxxxx $device mib-2.47.1.1.1.1.11.1 >> $LOG 

首先,請記住,在bash,你不能前和你的=符號後讓空間。另外,請記住,您想要的命令的返回值,所以你需要使用$。因此,這應該工作:

rtr=$(snmpget -v2c -c xxxxx $device mib-2.47.1.1.1.1.11.1) 

在此之後,寫你的變量到一個日誌文件可以簡單地用做:

echo rtr >> your.file 

沒有自己嘗試過,但應該沒問題。 希望它有幫助!

+0

不起作用,我收到以下錯誤消息。 xxxx @ ovmsn1 [48] ./test.sh ./test.sh:第16行的語法錯誤:'rtr = $'意外 〜 –