私はbashスクリプトを作成しようとしています。bashスクリプトで変数にMacアドレスを保存し、それを使って変更を確認する
- スクリプトは、IPアドレス
- スクリプトは、IPアドレスのある行のため
arp -a
コマンドをgrepするためのユーザーを要求します。 - MACアドレスはMACと呼ばれる変数として保存されます。
- スクリプトは、MACアドレスが変更されていないことを確認します。
#!/bin/bash
# Xdetect
echo "Welcome to Xdetect"
echo "Enter IP address of device to monitor (usually default gateway)"
read IP
MAC=arp -a | grep $IP | awk {'print $4'}
echo =$MAC
while : 'arp -a | grep $IP | awk {'print $4'}' = $MAC
do
echo "Mac has not changed"
sleep 2
done
スクリプトが動作しない、それがループしてMAC has not changed
場合でも、MACアドレスの変更をエコーします。 Xdetect.sh 9: Xdetect.sh: -a: not found
が、私はこれをどのように修正することができます:それは、エラーをループ直前に
は言って表示されますか?
あなたはa)の優れたチュートリアルを読む必要がありません。 //linuxcommand.org/tlcl.php)、b)http://www.shellcheck.net/を使用して、それが示すすべてのものを修正します。一見:変数へのコマンドの出力、パラメータ引用、awkコマンドの引用、whileループ構文... –
'MAC = $(arp -a | grep $ IP | awk '{print $ 4}')' 'echo $ MAC'と' while ["$(arp -a | grep $ IP | awk '{print $ 4}')" = "$ MAC"] ' – Arash
これは完璧に動作します。 –