cut Befehl im awk Befehl!?

O

onlineuser

Mitglied
Hi,

habe ein kleines Problem.

Möchte gerne aus der Prozessliste aus den VNC-Sessions die Desktopnummer auslesen. Soweit sogut, nur müßte ich innerhalb der awk-Anweisung mit cut einen Doppelpunkt wegschneiden.

ps axuw | grep "Xvnc :" |awk '{ print $1 "-" $2 "-" $12}'

Bei $12 müßte ich den voranstehenden Doppelpunkt entfernen. Habe leider keine Syntax gefunden, in der man innerhalb des awk-Befehls das realisieren könnte.

Wenn ich hingegen in eine Variale speichern würde, müßte ich ein Array verwenden, da es ja mehrere VNC-Sessions gibt.

Denke ich zu kompliziert? *gg*

Weiters müßte ich noch mit netstat rausfinden, ob eine Session verbunden oder nur listen ist und dem jeweiligen Prozesseintrag zuordnen. Hat hierfür jemand einen Lösungsweg ausser in ein Array zu schreiben!?

Dachte mir sonst, die Verbindungen auf Port 5900 + Desktopnummer aus der Prozessliste durchzugehen und auszulesen, ob die Session aktiv oder nicht aktiv ist.

Liebe Grüsse.
 
ersetz das Zeichen, bevor du die Variable in deiner AWK-Zeile verwendest, aber du kannst auch innerhalb AWK ersetzen.
 
Hi,

Code:
#!/bin/bash
clear
for i in `ps axuw | grep "Xvnc :" | awk '{ print $1 " - " $2 " - " $12 }' | awk -F : '{ print $1$2 }' | grep -v "Xvnc"`
do
  echo $i 
done

Habe es jetzt mal so gelöst. Jedoch wird jetzt nach jedem Eintrag ein Zeilenumbruch getätigt. Anscheinend teilt die For-Schleife den Ausdruck in mehrere Ergebnisse auf und nicht zeilenweise:

User_1 - PID_1 - Desktopnummer_1 +dazupassende netstat-Ausdruck
User_2 - PID_2 - Desktopnummer_2 +dazupassende netstat-Ausdruck
User_3 - PID_3 - Desktopnummer_3 +dazupassende netstat-Ausdruck
usw.

Im Moment gibt er mir jeden Wert in einer Extra Zeile aus.

also:
User_1
PID_1
Desktopnummer_1
User_2
PID_2
Desktopnummer_2
User_3
PID_3
Desktopnummer_3
usw.

Wie kann ich das realisieren? Nach jeder Zeile (User, PID und Desktopnummer) muss ich den netstat aufrufen und auswerten lassen.

PS: Aha, die For-Schleife teile nach Leerzeichen auf. Habe diese entfernt, jetzt läuft sie für jeden Prozesseintrag nur einmal durch. :)

PROBLEM GELÖST

Jedoch hab ich nun ein neues Problem. *gg*

Ich muss netstat -a | grep 5900+Desktopnummer filtern. Wie kann ich bei grep im Parameter mathematische Operationen ausführen lassen? Zuvor rechnen und Zwischenspeichern gefällt mir nicht so sehr. Gibt es da eine Möglichkeit?

Liebe Grüsse.
 
Zuletzt bearbeitet:
Zurück
Oben