-1

Debian マシンで BASH スクリプトを実行しようとしています。以前に隠しファイルにコピーしたMACアドレスがマシンの実際のMACアドレスと一致する場合、またはマシンが起動するよりもファイルが存在する場合、スクリプトはすべての起動時に実行する必要があります(.shファイルをに入れます)。いずれかの条件が満たされない場合、マシンはシャットダウンする必要があります。/etc/init.d.mac.txt.mac.txt

これが私のスクリプトです:

#!/bin/bash
output="'cat /root/.mac.txt'";
mac="'/sbin/ifconfig | grep 'eth0' | tr -s ' ' | cut -d ' ' -f5'"
if ["$mac" = "$output" ] || [ -f /root/.mac.txt]
then
echo "Server will start"
else
shutdown -h now
fi

MAC アドレスが正しくない場合、マシンはシャットダウンしますが、.mac.txtファイルを削除してもシャットダウンしません。論理エラーまたは構文エラーがありますか?

4

1 に答える 1

2

わずかに変更されたバージョン:

#!/bin/bash
macfile='/root/.mac.txt'
mac=$(/sbin/ifconfig | grep 'eth0' | tr -s ' ' | cut -d ' ' -f5)

# Shut down if file does not exist
if [ ! -f $macfile ]; then
    shutdown -h now
fi

# Verify MAC address against cached value
output=$(cat $macfile)
if [ "$mac" = "$output" ]; then
    echo "Server will start" 
else 
    shutdown -h now 
fi 

説明:

  • ファイルから読み取るに、ファイルの存在をテストします
  • " [" および " ]" 文字の前後には空白が必要です
  • サブコマンドを実行するとき$( ... )は、バッククォートの代わりに構文を使用してください
于 2012-07-13T20:20:55.383 に答える