find, grep problem

S

sniffer

Jungspund
hallo shell guru´s

ich hab 2 idente server mit der gleichen sles version 9.3.
find in der version 4.1.7
grep in der version 2.5.1

server1:/tmp/test # touch 0
server1:/tmp/test # touch 1
server1:/tmp/test # touch 2
server1:/tmp/test # touch 3
server1:/tmp/test # touch 4
server1:/tmp/test # find /tmp/test | grep /[0-9]
/tmp/test/0
/tmp/test/1
/tmp/test/2
/tmp/test/3
/tmp/test/4​

server2:/tmp/test # touch 0
server2:/tmp/test # touch 1
server2:/tmp/test # touch 2
server2:/tmp/test # touch 3
server2:/tmp/test # touch 4
server2:/tmp/test # find /tmp/test | grep /[0-9]
/tmp/test/1​

beim server1 bekomm ich den richtigen output zurück - bei server2 nicht! interessant, nicht?

kann sich da jemand von euch erklären?

gruß
roland
 
hi

1. es gibt kein sles 9.3. nur ein suse 9.3 oder ein suse linux enterprise server 9.

2. die ausgabe von ls -l wäre noch hilfreich ;)

mfg frank
 
morgen

version: SLES-9-x86_64-SP3 auf beiden servern.

server1:/tmp/test # ls -l
total 3
drwxr-xr-x 2 root root 168 Aug 24 06:17 .
drwxrwxrwt 31 root root 2856 Aug 24 06:23 ..
-rw-r--r-- 1 root root 0 Aug 24 06:17 0
-rw-r--r-- 1 root root 0 Aug 24 06:17 1
-rw-r--r-- 1 root root 0 Aug 24 06:17 2
-rw-r--r-- 1 root root 0 Aug 24 06:17 3
-rw-r--r-- 1 root root 0 Aug 24 06:17 4

server2:/tmp/test # ls -l
total 5
drwxr-xr-x 2 root root 168 Aug 24 06:17 .
drwxrwxrwt 59 root root 5296 Aug 24 06:22 ..
-rw-r--r-- 1 root root 0 Aug 24 06:17 0
-rw-r--r-- 1 root root 0 Aug 24 06:17 1
-rw-r--r-- 1 root root 0 Aug 24 06:17 2
-rw-r--r-- 1 root root 0 Aug 24 06:17 3
-rw-r--r-- 1 root root 0 Aug 24 06:17 4

problem:
server1:/tmp/test # find /tmp/test | grep /[0-9]
/tmp/test/0
/tmp/test/1
/tmp/test/2
/tmp/test/3
/tmp/test/4

server2:/tmp/test # find /tmp/test | grep /[0-9]
/tmp/test/1

gruß
roland
 
Hallo,

da ist aber sonst noch irgendwas anderes in /tmp/test, oder? Und bei beiden Servern was anderes. Bei mir zeigt ein "ls -l" ein total von 0 an.
Dein Problem hat vermutlich damit nichts zu tun, seltsam ist das auf jeden Fall.
/tmp/test ist auch ein normales Verzeichnis auf beiden Servern? Kein symbolischer Link irgendwohin?

Gruß
 
hi phrenicus

nein da ist sonst nichts in dem verzeichnis /tmp/test und die 5 files hab ich nur zum testen angelegt - sind auf beiden servern gleich. ist auch kein link oder so. ich kann das auch in jedem verzeichnis machen - funktioniert nirgends.

leg in ein verzeichnis 5 files mit "touch 0-4" an und versuch dann den find befehl den ich hier geschrieben habe. du solltest alle 5 files zurück kriegen was auch normal wäre. bei mir funktioniert´s aber bei 3 von ca. 80 servern nicht :think:

gruß
 
Hallo,

wirklich seltsam. Ich würde an der Stelle mal beginnen, binaries (ls,bash,find, grep usw.) nach Länge und MD5 mit den funktionierenden zu vergleichen und die Installation der Pakete überprüfen. Patchlevel sind gleich ?

Gruß
hmhweb
 
hallo

patchlevel sind die gleichen. alle server auf SLES-9-x86_64-SP3. auch die checksummen stimmen überein (siehe unten). mittlerweile hab ich mal nen call bei novell aufgemacht. mal abwarten was die dazu meinen.

server1:~ # cksum /usr/bin/grep
2539055375 143278 /usr/bin/grep
server1:~ # cksum /usr/bin/find
770499147 62456 /usr/bin/find
server1:~ # cksum /bin/bash
2367083551 534104 /bin/bash
server1:~ # cksum /bin/ls
1406914432 102195 /bin/ls

server2:~ # cksum /usr/bin/grep
2539055375 143278 /usr/bin/grep
server2:~ # cksum /usr/bin/find
770499147 62456 /usr/bin/find
server2:~ # cksum /bin/bash
2367083551 534104 /bin/bash
server2:~ # cksum /bin/ls
1406914432 102195 /bin/ls

server1:~ # md5sum /usr/bin/grep
ee61aa192db3ea3e8d4ad42329cbac10 /usr/bin/grep
server1:~ # md5sum /usr/bin/find
f899dff72f7a7b6678806bc2421c0577 /usr/bin/find
server1:~ # md5sum /bin/bash
6aa070ffac566f7bca109cf408dcb794 /bin/bash
server1:~ # md5sum /bin/ls
c0a0eb919ba65e9d21cee32f3b0b4c25 /bin/ls

server2:~ # md5sum /usr/bin/grep
ee61aa192db3ea3e8d4ad42329cbac10 /usr/bin/grep
server2:~ # md5sum /usr/bin/find
f899dff72f7a7b6678806bc2421c0577 /usr/bin/find
server2:~ # md5sum /bin/bash
6aa070ffac566f7bca109cf408dcb794 /bin/bash
server2:~ # md5sum /bin/ls
c0a0eb919ba65e9d21cee32f3b0b4c25 /bin/ls

gruß
roland
 
Hallo nochmal,

was ergibt denn
Code:
find /tmp/test -name "[0-9]"
oder
Code:
find /tmp/test -name "[0|1|2|3|4]"
find /tmp/test

Ich würde testhalber mal einen von den dreien komplett neu installieren.
Ansonsten ebenso ratlos

hmhweb
 
Grummel,

Code:
server1:~ strace find /tmp/test | grep /[0-9] 2>/tmp/trace.1
server2:~ strace find /tmp/test | grep /[0-9] 2>/tmp/trace.2

Dann

Code:
diff trace.1 trace.2

EDIT: Sorry, Code funktioniert nicht... Muss nachschauen. Dauert kurz

*noch ein Grummeln*

Der Reihe nach:

Code:
server1:~ strace find /tmp/test 2>/tmp/trace1 | tee /tmp/tee.1
server2:~ strace find /tmp/test 2>/tmp/trace2 | tee /tmp/tee.2

Dann siehst Du zumindest mal, was find für einen Output generiert und ob es am Output von find liegt.
Wie ich das sehe, gibt es drei Möglichkeiten:
1. find generiert falschen Output (unwahrscheinlich)
2. grep generiert falschen Output (unwahrscheinlich)
3. grep erhält falschen Input (bash hat einen Fehler und die Pipe funktioniert nicht richtig)

md5sum /bin/bash

Gruß
 
Zuletzt bearbeitet:
Hallo,

ich würde das Spielchen auch mal bissi weiter treiben...und folgendes kontrollieren:

less /var/log/messages
last
who
history | less

Nur um mal ein Gefühl dafür zu bekommen, ob sich da jemand zu schaffen gemacht hat... (md5sum war ein Anfang)
 
Schlaubi_fi.de schrieb:
Hallo,

ich würde das Spielchen auch mal bissi weiter treiben...und folgendes kontrollieren:

less /var/log/messages
last
who
history | less

Nur um mal ein Gefühl dafür zu bekommen, ob sich da jemand zu schaffen gemacht hat... (md5sum war ein Anfang)

Wenn jemand die Möglichkeit hat, executables in /bin, /usr/bin zu modifiziern, wird er auch mit ziemlicher Sicherheit seine verräterischen Spuren in history, ... löschen (können).

Gruss, Xanti
 
hier die lösung! (das glaubt mir keiner).

hatte ein file im root verzeichnis das "1" hieß und somit funktioniert der grep nicht mehr richtig.
versucht es selber einmal. würde mich interessieren ob bei euch das gleiche verhalten auftritt.

legt in / ein file mit touch 1 an und im verzeichnis /tmp ein paar mit touch 1,2,3,4,......

beispiel:
server1:/ # touch 1
server1:/ # cd /tmp
server1:/tmp # touch 1
server1:/tmp # touch 2
server1:/tmp # touch 3
server1:/tmp # touch 4
server1:/tmp # cd /
server1:/ # find /tmp | grep /[0-9]
/tmp/1

server1:/ # rm 1
server1:/ # find /tmp | grep /[0-9]
/tmp/1
/tmp/2
/tmp/3
/tmp/4


es funktioniert also nicht wenn in / ein file von 0 bis 9 liegt. alles darüber ist egal. datt n fetter bug!!!!!

toll gell?!?!?!

gruß
roland
 
Zuletzt bearbeitet:
rofl,

habs grad bei mir (gentoo) ausprobiert und das klappt wirklich (nicht).....:D

Wer schreibt den bug-report?........:)
 
Hallo
Generell sollte man die Pattern in Anführungszeichen setzen, dann erspart man sich unerwartete Ergebnisse!

$ cd /
$ touch 1
$ touch /tmp/{1,2,3,4,5}
$ find /tmp |grep "/[[:digit:]]"
/tmp/1
/tmp/2
/tmp/3
/tmp/4
/tmp/5

$ ls "/[[:digit:]]"
/1

Gruß Wolfgang
 
Das ist übrigens kein Bug, sondern pathname expansion der Shell. Die Shell interpretiert den Befehl find /tmp | grep /[0-9] und expandiert /[0-9], so es möglich ist. Da die 1 unter root existiert, führt die Shell find /tmp | grep /1 aus, mit entsprechendem richtigen Ergebnis. Wenn allerdings kein /<beliebige Zahl> existiert, erfolgt keine Expansion und die Shell übergibt den regulären Ausdruck /[0-9] an grep.

Um die pathname expansion zu verhindern: einfach den Pattern quoten, so wie Wolfgang schon geschrieben hat.

Gruss, Xanti
 
Zuletzt bearbeitet:
@xanti

ok, aber dann müsste ich bei dem beispiel ja zumindest die 9 im root verzeichnis zurückkriegen, oder?

server1:/ # cd /
server1:/ # touch 9
server1:/ # touch /tmp/{1,2,3,4,5}
server1:/ # find /tmp | grep /[0-9]

die shell übergibt den befehl in meinem beispiel so: find /tmp | grep /9 und 9 gibt es - kommt aber nicht´s zurück.

gruß
roland
 
Es gibt aber kein /tmp/9.
grep bekommt von find:

Code:
/tmp/1
/tmp/2
/tmp/3
/tmp/4
/tmp/5
/tmp/...

Somit nix, was /9 matcht.

Gruss, Xanti
 
Zuletzt bearbeitet:

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

E/A-Fehler (.snapshots is not a btrfs subvolume).

Verständnisfrage zu RegExps

Keine grafische Oberfläche (Debian Installation)

Creative Labs SoundBlaster Audigy 2 ZS unter Debian / Kernel 3.16

Zurück
Oben