2

大きな問題があります。私のスクリプトは、Debian Squeeze ローカル VM と Mac OX 10.8 ではうまく動作しますが、Debian サーバーではうまく動作しません...カーネル、bash のすべてのバージョンをチェックしました...すべてで同じです!

私のスクリプト:

#!/bin/bash
# Version 1.0

ipaddr=$1
datel=$(date +"%d/%m/%Y %k:%M")

function valid_ip() 
{
   local  ip=$ipaddr
   local  stat=1

   if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$ ]]; then
      OIFS=$IFS
      IFS='.'
      ip=($ip)
      IFS=$OIFS
      [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
          && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
      stat=$?
   fi
   return $stat
}

valid_ip
if [ $? -eq "0" ]; then
      nmap -sS -A $ipaddr --max-retries 3 -oX landiscover.xml --webxml 2>> nmap_error.log
      echo "$datel Please wait during discover your network, this operation may take a        while" >> landiscover.log
else
      echo "$datel Please enter a valid network address : XXX.XXX.XXX./XX" >>  landiscover.log
fi
if [ $? -eq "0" ]; then
       echo "$datel Landiscover ran successfully !" >> landiscover.log
fi

デバッグ オプションを指定してこのスクリプトを実行すると、次の出力が得られます。

loterm_g@vm11:/opt$ sh -x landiscover.sh 192.168.1.0/24
+ 
: not found.sh: 1: 
+ ipaddr=192.168.1.0/24
+ date +%d/%m/%Y %k:%M
+ datel=30/07/2013  1:54
+ 
: not found.sh: 1: 
landiscover.sh: 8: Syntax error: "(" unexpected

何か案が ?

4

1 に答える 1

1

sh(必ずしも)bashではなく、配列について知らないインタープリターを使用してスクリプトを実行しています。

また、エラー メッセージは、スクリプトにキャリッジ リターンがあることを示しているようです。Windowsで開発しましたか?

于 2013-07-30T00:39:21.463 に答える