"eigenartige Antwort" von grep

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Felis
Beiträge: 392
Registriert: 14.04.2006 17:00:13

"eigenartige Antwort" von grep

Beitrag von Felis » 19.05.2015 16:52:44

Wollte auf meinem Raspberry pi in der syslog nach ddclient schauen, und bekomme die für mich unverständliche Antwort:

Code: Alles auswählen

am@raspberrypi ~ $ grep ddclient /var/log/syslog
Übereinstimmungen in Binärdatei /var/log/syslog.
Sonst funktioniert grep aber wie gewohnt:

Code: Alles auswählen

am@raspberrypi ~ $ grep am /etc/group
adm:x:4:pi,am
dialout:x:20:pi,am
cdrom:x:24:pi,am
audio:x:29:pi,am,pulse
video:x:44:pi,am
plugdev:x:46:pi,am
games:x:60:pi,am
users:x:100:pi,am
netdev:x:105:pi,am
input:x:999:pi,am
fuse:x:108:am
spi:x:1002:pi,am
gpio:x:1003:pi,am
am:x:500:
Für Aufklärung wäre ich dankbar.

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: "eigenartige Antwort" von grep

Beitrag von wanne » 19.05.2015 17:55:40

Wenn nicht lesbare Zeichen in einer Datei vorhanden sind, gibt grep per default nur die meldung aus, dass der string vorhanden ist statt irgend welche Bytes auf die konsole zu hauen.
Die wirklich interessante frag ist, warum bei dir irgend welche nichtbuchstaben in deinem Syslog sined.

Umgehen kannst du das verhalten von grep mit -a

Kannst mal damit gucken, was der übeltäter ist:

Code: Alles auswählen

grep -a -E -v '^[[:print:]]*$' /var/log/syslog| hexdump -C 
rot: Moderator wanne spricht, default: User wanne spricht.

Felis
Beiträge: 392
Registriert: 14.04.2006 17:00:13

Re: "eigenartige Antwort" von grep

Beitrag von Felis » 19.05.2015 18:13:30

kein Übeltäter??

Code: Alles auswählen

am@raspberrypi ~ $ grep -a -E -v '^[[:print:]]*$' /var/log/syslog| hexdump -C 
am@raspberrypi ~ $ 
zumindest wirft er nix aus.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: "eigenartige Antwort" von grep

Beitrag von Meillo » 20.05.2015 07:40:38

Schau mal, was file(1) zur Datei sagt: `file /var/log/syslog'. Da sollte wohl sowas wie ``ASCII text, with very long lines'' raus kommen. Falls logrotate mehrere Versionen der Datei angelegt hat, dann solltest du dir auch diese anschauen (/var/log/syslog*).

Oeffne die Datei mal mit less(1) oder vim(1) und gewinne einen Eindruck, wie sie aussieht. Ist da also Text in einem Logfile-Format zu erkennen? Oder ist da alles binaer? (Was mir zur Verbindung der Stichworte ``Logfile'' und ``binaer'' einfaellt, ist SystemD. ;-) )
Use ed once in a while!

Felis
Beiträge: 392
Registriert: 14.04.2006 17:00:13

Re: "eigenartige Antwort" von grep

Beitrag von Felis » 20.05.2015 09:48:27

Lässt sich mit cat problemlos öffnen, ist ganz normaler Text, sehe nix Unauffälliges. Mit grep -a lässt sich die Suche nach ddclient auch problemlos ausführen. Nur mit grep alleine gibts das Problem, wenns denn überhaupt eines ist. Systemd kanns nicht sein, ist noch Wheezy. Jedenfalls vielen Dank für den Input, werde mich weiter damit beschäftigen, wieder was gelernt!

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: "eigenartige Antwort" von grep

Beitrag von uname » 20.05.2015 10:05:33

Kannst noch mal versuchen nicht druckbare Zeichen auszugeben (hört sich irgendwie nach einem Widerspruch an). Sollte ja eigentlich leer sein ;-)

Code: Alles auswählen

cat /var/log/syslog | tr -d '[:print:]' 
Umgekehrt kannst du auch mal druckbare Zeichen ausgeben.

Code: Alles auswählen

cat /var/log/syslog | tr -cd '[:print:]' 
strings /var/log/syslog
Wobei die letzten beiden Ausgaben nicht identisch sein werden.

Benutzeravatar
speefak
Beiträge: 449
Registriert: 27.04.2008 13:54:20

Re: "eigenartige Antwort" von grep

Beitrag von speefak » 18.08.2021 16:44:54

Auch wenn der Thread schon älter ist, habe ich aktuell das gleiche Problem.

Wie kann ich den Eintrag finden, der grep dazu veranlaßt die Datei als Binärdatei anzusehen ? Zur "Übeltätersuche" wäre das recht hilfreich.

Code: Alles auswählen

cat auth.log | awk -F $(cat /var/log/syslog | tr -d '[:print:]' ) '{print $1 $2}'
awk: Kommandozeile:1: €
awk: Kommandozeile:1: ^ Ungültiges Zeichen »�« in einem Ausdruck
Ich hatte gestern mit den Unicodes ein wenig im Terminal herumgespielt. Ich frage mich nur wie die im Log landen sollten und wie finde ich die Zeile in der Datei ?

EDIT : Ich habe die Datei gerade einmal mit Gedit geöffnet und da meckert er direkt wegen ungültigen Zeichen. Die Zeile ist auch komplett rot markiert. Zeile gelöscht und keine Fehler mehr. Frag ich trotzdem wie Unicode? im Log landen konnte.

Antworten