Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Linux-Shell-Script (Stringverarbeitung)

52 views
Skip to first unread message

Randolf Skerka

unread,
Feb 2, 1997, 3:00:00 AM2/2/97
to

Dominic Heynen wrote at Sun, 02 Feb 1997 15:20:51 +0100 in de.comp.os.linux.misc :
: Hi,
:
: ich habe ein Problem mit einem CGI-Script:
: Es soll anhand der IP-Adresse des abrufenden Rechners
: erkannt werden ob dieser Rechner einer bestimmten Gruppe angehoert.
: Das CGI-Script soll als Linx/UNIX-ShellScript laufen.
: Das Vergleichen der IP-Adresse mit einer von mir vorgegebenen
: funktioniert einwandfrei :-)
: Nun moechte ich aber nur die z.B. ersten drei 'Gruppen' der
: IP-Adresse vergleichen. Genau hier liegt mein Problem.
:
: Wie kann ich einen String (IP-Adresse) einfach um x Stellen
: kuerzen, um ihn dann zu vergleichen?

www.xxx.yyy.zzz -> www.xxx.yyy ja?

Einfach : echo ${IP} | cut -d"." -f-3

-- Randolf
+-------------------------------------------------------------------------+
| Randolf Skerka http://www.heim2.tu-clausthal.de/~randolf |
| Tel./Fax. ++49-5323-78140 Randolf...@heim2.tu-clausthal.de |
+----= Don't always say what you know, but always know what you say! =----+

Dominic Heynen

unread,
Feb 2, 1997, 3:00:00 AM2/2/97
to

Hi,

ich habe ein Problem mit einem CGI-Script:
Es soll anhand der IP-Adresse des abrufenden Rechners
erkannt werden ob dieser Rechner einer bestimmten Gruppe angehoert.
Das CGI-Script soll als Linx/UNIX-ShellScript laufen.
Das Vergleichen der IP-Adresse mit einer von mir vorgegebenen
funktioniert einwandfrei :-)
Nun moechte ich aber nur die z.B. ersten drei 'Gruppen' der
IP-Adresse vergleichen. Genau hier liegt mein Problem.

Wie kann ich einen String (IP-Adresse) einfach um x Stellen
kuerzen, um ihn dann zu vergleichen?

Besten Dank schon mal im voraus.

Joerg Wienand

unread,
Feb 2, 1997, 3:00:00 AM2/2/97
to

Es war leider der falsche Benutzer eingetragen bitte an
Joerg....@et.bocholt.fh-ge.de mailen!!

Thomas Rese

unread,
Feb 2, 1997, 3:00:00 AM2/2/97
to

Dominic Heynen (hey...@et.bocholt.fh-ge.de) wrote:
> Hi,

> Das CGI-Script soll als Linx/UNIX-ShellScript laufen.
> Das Vergleichen der IP-Adresse mit einer von mir vorgegebenen
> funktioniert einwandfrei :-)
> Nun moechte ich aber nur die z.B. ersten drei 'Gruppen' der
> IP-Adresse vergleichen. Genau hier liegt mein Problem.

> Wie kann ich einen String (IP-Adresse) einfach um x Stellen
> kuerzen, um ihn dann zu vergleichen?

man cut

(echo 192.168.2.100 | cut -d. -f1-3)

> Besten Dank schon mal im voraus.

Gruss
Thomas
--
/* (C)opyright by Thomas Rese, t...@gismo.owl.de, Tel.: 49 5251 680463 /
/ /
/ Real programmers don't comment... /
/ What was hard to write should be hard to read. */

Oliver Graffunder

unread,
Feb 4, 1997, 3:00:00 AM2/4/97
to

Dominic Heynen wrote:
>
> Hi,
>
> ich habe ein Problem mit einem CGI-Script:
> Es soll anhand der IP-Adresse des abrufenden Rechners
> erkannt werden ob dieser Rechner einer bestimmten Gruppe angehoert.
> Das CGI-Script soll als Linx/UNIX-ShellScript laufen.
> Das Vergleichen der IP-Adresse mit einer von mir vorgegebenen
> funktioniert einwandfrei :-)
> Nun moechte ich aber nur die z.B. ersten drei 'Gruppen' der
> IP-Adresse vergleichen. Genau hier liegt mein Problem.
>
> Wie kann ich einen String (IP-Adresse) einfach um x Stellen
> kuerzen, um ihn dann zu vergleichen?

if [ `echo $CLIENT_IP | grep -E 'xxx\.yyy\.zzz\..+'` ] ; then
echo Hallo freund
else
echo Hallo feind
fi

MfG Graffiti
--
-----------------------------------------------
Oliver Graffunder | Berlin, Charlottenburg
mailto:gr...@berlin.snafu.de
-----------------------------------------------

Winfried Truemper

unread,
Feb 5, 1997, 3:00:00 AM2/5/97
to

Dominic Heynen (hey...@et.bocholt.fh-ge.de) wrote:

: Wie kann ich einen String (IP-Adresse) einfach um x Stellen

: kuerzen, um ihn dann zu vergleichen?

Aus der bash-FAQ:


Instead of using

/usr/local/bin/ipaddr | read A B C D

to break the local machine's IP address into separate octets, use

OIFS="$IFS"
IFS=.
set -- $(/usr/local/bin/ipaddr)
IFS="$OIFS"
A="$1" B="$2" C="$3" D="$4"

Beware, however, that this will change the shell's positional
parameters. If you need them, you should save them before doing
this.

Sagen wir also, die IP-Adresse stünde in $REMOTE_IP, dann sähe der Code für
Dich folgendermassen aus:

old_IFS="$IFS"
IFS=.
set -- $REMOTE_IP
IFS="$old_IFS"
AAA="$1" BBB="$2" CCC="$3" DDD="$4"

if [ "$AAA.$BBB.$CCC" = "192.168.1" ]
then
if [ "$DDD" -gt "97" -o "$DDD" -lt "127" ]
then
echo "Hallo Welt"
fi
fi

Vorteil: kommt ganz ohne forken aus.

-Winfried

Henning Hucke

unread,
Feb 5, 1997, 3:00:00 AM2/5/97
to

Dominic Heynen schrieb neulich die folgenden Zeilen:

> Nun moechte ich aber nur die z.B. ersten drei 'Gruppen'
> der IP-Adresse vergleichen. Genau hier liegt mein Problem.
>

> Wie kann ich einen String (IP-Adresse) einfach um x Stellen kuerzen, um
> ihn dann zu vergleichen?

newip=`expr "$oldip" : '\(.*\..*\..*\)\..*'`

... Regular expressions sind was schoenes :).

MfG Henning
--
Viele, die die schaendlichsten Dinge tun, fuehren die trefflichsten
Reden. (Demokrit)


Gerd Knorr

unread,
Feb 7, 1997, 3:00:00 AM2/7/97
to

On Wed, 05 Feb 1997 14:10:07 +0100, Henning Hucke <h_h...@aeon.escape.de> wrote:
>Dominic Heynen schrieb neulich die folgenden Zeilen:
>
>> Nun moechte ich aber nur die z.B. ersten drei 'Gruppen'
>> der IP-Adresse vergleichen. Genau hier liegt mein Problem.
>>
>> Wie kann ich einen String (IP-Adresse) einfach um x Stellen kuerzen, um
>> ihn dann zu vergleichen?
>
>newip=`expr "$oldip" : '\(.*\..*\..*\)\..*'`
>
>... Regular expressions sind was schoenes :).

... aber an dieser Stelle overkill.
Besser:

IFS="."
set $REMOTE_ADDR

und dann hat man die einzelnen Teile der IP-Adresse in $1 $2 $3 und $4, *ohne*
daß man dafür erst ein Programm starten muß.

Gerd

--
HOST SYSTEM NOT RESPONDING, PROBABLY DOWN. DO YOU WANT TO WAIT? (Y/N)


0 new messages