Ping
如何從文件中列印多個值?
#!/bin/bash COUNT=100 SIZE=100 INTERVAL=0.2 for myHost in `cat /files0/home/singhtr/input` do echo $myHost ping -i $INTERVAL -q -n -s $SIZE -c $COUNT $myHost|grep -i packet done
輸入文件:
# cat input 4.2.2.2 abc ATT 8.8.8.8 def BCC
如何從這樣的輸入文件中列印多個值
預期輸出:
IP of the device: 4.2.2.2 Device Name: abc customer name:ATT 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
等等,隨著循環的進行。
我想通過 bash/shell 腳本來實現這一點。
#!/bin/bash while read myHost do COUNT=100 SIZE=100 INTERVAL=0.2 IP=$(echo $myHost | cut -d " " -f1) NAME=$(echo $myHost | cut -d " " -f2) CUSTOMER=$(echo $myHost | cut -d " " -f3) PING=$(ping -i $INTERVAL -q -n -s $SIZE -c $COUNT $IP | grep -i packet) echo "IP of the device: $IP" echo "Device name: $NAME" echo "Customer name: $CUSTOMER" echo "$PING" echo "" done < /files0/home/singhtr/input
這是您的問題的一種可能的解決方案。您可以使用
cut
來選擇field
要輸出的內容。然後用一個簡單的echo
命令輸出它。要一次讀取文件一行,您可以使用while read LINE do ... done < FILE
編輯
如果您想定期執行腳本,您應該考慮創建一個
cronjob
. 您可以鍵入crontab -l
以查看cronjobs
目前登錄使用者的身份。如果您想安排一個cronjob
,您可以執行以下操作:$ crontab -e
通過插入例如編輯 crontab:
*/15 * * * * /path/to/script >> /path/to/log_\`date +%s\` 2>&1
這將創建一個每 15 分鐘
cronjob
在該位置執行一次腳本的腳本,/path/to/script
並將其寫入輸出 + 可能發生在/path/to/log_
帶有 unix 時間戳後綴的文件中的錯誤(例如 1549883612)。