Strona 1 z 1

[+] Problem ze skryptem w bashu do uzupełniania freeradiusa

: 10 marca 2009, 08:55
autor: dan-j2
Witam. Napisałem ostatnio skrypcik, który ma za zadanie z pliku radius.cfg czytać konfigurację i na podstawie jej uzupełniać plik konfiguracyjny ,,users'' w radiusie.

Wygląda on następująco:

Kod: Zaznacz cały

#!/bin/bash

rm /tmp/users
cat /etc/firewall/radius.cfg | grep -v "#" | sed -e '/^$/d' | awk  '{ print $1, $2, $3, $4, $5 }' | while read IP LOGIN HASLO MAC LS ; do
if [ "$MAC" != "0" ] ; then
echo "
$LOGIN  Auth-Type := Local, User-Password == "$HASLO", Calling-Station-Id = "$MAC", Simultaneous-Use := $LS
       Service-Type = Framed-User,
       Framed-Protocol = PPP,
       Framed-IP-Address = $IP,
       Framed-IP-Netmask = 255.255.255.0,
       Framed-Routing = Broadcast-Listen,
       Framed-MTU = 1492,
       Framed-Compression = Van-Jacobsen-TCP-IP" >> /etc/freeradius/users
fi
if [ "$MAC" = "0" ] ; then
echo "
$LOGIN  Auth-Type := Local, User-Password == "$HASLO", Simultaneous-Use := $LS
       Service-Type = Framed-User,
       Framed-Protocol = PPP,
       Framed-IP-Address = $IP,
       Framed-IP-Netmask = 255.255.255.0,
       Framed-Routing = Broadcast-Listen,
       Framed-MTU = 1492,
       Framed-Compression = Van-Jacobsen-TCP-IP" >> /etc/freeradius/users
fi
done
echo "OK, gotowe!"

exit 0
Głównie chodzi o to, że parametry takie jak $HAS£O i $MAC ma być zapisywane w taki sposób:

Kod: Zaznacz cały

"00:50:aa:aa:aa:aa"

Kod: Zaznacz cały

"sdfhjbsfhj" 
A zapisuje w taki:

Kod: Zaznacz cały

00:50:aa:aa:aa:aa

Kod: Zaznacz cały

sdfhjbsfhj
Jak mam zmodyfikować skrypcik, żeby zapisywał mi w takiej postaci jak podałem u góry?

Pozdrawiam

: 10 marca 2009, 09:29
autor: RaV.
Jeśli chodzi Ci o cudzysłowie, a raczej jego brak, to poprzedź je backslashem ("\").
Przykład:

Kod: Zaznacz cały

MAC="00:50:aa:aa:aa:aa"
echo "$MAC"
echo "\"$MAC\""

: 10 marca 2009, 12:51
autor: dan-j2
Dzięki wielkie dopiero się uczę pisania skryptów w bashu i juz będę wiedział na przyszłość :)