Форум: Общи Проблеми и Въпроси
Тема: bash скрипт грешка
Автор: mcwolf
Мнение от mcwolf пуснато на Юни 13 2006, 18:55
а ето и самият скрипт
Код:
#!/bin/bash
CONFIG="/etc/dhcpd.conf";
if [ -f $CONFIG ]; then
current=0;
for row in `grep -v ^# $CONFIG | awk '{if($1 == "fixed-address" && length($2)) print $2}'`; do
row=`echo $row | tr -d ";"`;
ip[$current]=$row;
let "current += 1";
done;
let "current = 0";
for row in `grep -v ^# $CONFIG | awk '{if($1 == "hardware" && $2 == "ethernet" && length($3)) print $3}'`; do
row=`echo $row | tr -d ";"`;
mac[$current]=$row;
let "current += 1";
done;
if [ ${#ip[@]} -eq ${#mac[@]} ]; then
for (( i = 0; i < ${#ip[@]}; i++ )); do
echo "iptables -t nat -s ${ip[$i]} -m mac --mac-source ${mac[$i]} -j ACCEPT;";
done;
fi;
fi;
скриптът чете конфигурационният файл на dhcp сървърът и генерира правила за iptables - на няколко машини работи - всъщност не работи единствено на машината за която е писан - дава следната грешка
Код:
iptables -t nat -s 192.168.1.2 -m mac --mac-source 00:C0:CA:dB:94:80 -j ACCEPT;
: command not found3:
: command not found2:
iptables -t nat -s 192.168.1.3 -m mac --mac-source 00:14:22:B3:BA:40 -j ACCEPT;
: command not found3:
: command not found2:
iptables -t nat -s 192.168.1.4 -m mac --mac-source 00:C0:AF:10:10:02 -j ACCEPT;
: command not found3:
: command not found4:
: command not found5:
по точно работи - но мамкаму : command not found5: и подобните му на какво се дължат ?
< http://galiry.linux-index.org:1024/download/ > (на тоя адрес съм сложил скриптът и примерен конфиг файл)
Мнение от Red пуснато на Юни 20 2006, 15:36
От съвсем скоро се занимавам със shell ######, но си мисля, че проблема е в последната част. Можеш ли да го пробваш така :
Код:
#!/bin/bash
CONFIG="/etc/dhcpd.conf";
if [ -f $CONFIG ]; then
current=0;
for row in `grep -v ^# $CONFIG | awk '{if($1 == "fixed-address" && length($2)) print $2}'`; do
row=`echo $row | tr -d ";"`;
ip[$current]=$row;
let "current += 1";
done;
let "current = 0";
for row in `grep -v ^# $CONFIG | awk '{if($1 == "hardware" && $2 == "ethernet" && length($3)) print $3}'`; do
row=`echo $row | tr -d ";"`;
mac[$current]=$row;
let "current += 1";
done;
i=0
while [ $i -lt $current ];do
echo "iptables -t nat -s ${ip[$i]} -m mac --mac-source ${mac[$i]} -j ACCEPT;"
let "i=$i+1"
done
fi