Unix String durchsuchen

Hallo,

ich möchte abfragen ob ich auf einer Maschine sudo Rechte habe.

var1=$(ssh -f masch1 /opt/sfw/bin/sudo -l)
nun habe ich in $var1 aber einen String

User bla may run the following commands on this host: NOPASSWD: /usr/bin/su - bla1 NOPASSWD: /usr/bin/su - bla2

Für einen Test brauche ich jetzt aber nur den Namen, oder eine true/false, oder so.

Wie mache ich das am geschicktesten ?
Mir würde jetzt nur eine Schleife mit Testbedingung einfallen

for i in $var1; do if [o$i == obla1]; then var2=1; fi ; done

Es geht doch bestimmt auch ein bißchen eleganter, oder ?

Grüße

Chris

Hi Chris,

Für einen Test brauche ich jetzt aber nur den Namen, oder eine
true/false, oder so.

Wie mache ich das am geschicktesten ?
Mir würde jetzt nur eine Schleife mit Testbedingung einfallen

for i in $var1; do if [o$i == obla1]; then var2=1; fi ; done

Der Name wird aber auch wieder ausgegeben wenn der User keine zusätzlichen Befehle über sudo ausführen darf. So ist es zumindest unter RedHat 5, Debian Lenny und Solaris 10. D.h. eine Suche nur nach dem Namen wird nicht zum gewünschten Ergebnis führen.

Es geht doch bestimmt auch ein bißchen eleganter, oder ?

Ich würde es so machen.

ssh -t maddin@localhost sudo -l && echo "Erfolgreich"

Da der Rückgabewert von sudo an das lokale System übergeben wird, kann dieser direkt ausgewertet werden. Alles was nach dem „&&“ kommt, wird in diesem Fall nur ausgeführt, wenn das sudo erfolgreich, d.h. der Benutzer erhält zusätzliche Rechte, zurück kommt.

Gruß
Martin

Hallo Martin,

danke, das ist eine schöne Lösung !

Grüße

Chris