Benutzer ermitteln

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von tw-elektric, 13.03.2008.

  1. #1 tw-elektric, 13.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    Hallo zusammen,
    ich versuche gerade einen Script zu erstellen, mit welchem ich auf 10 Rechnern auf einmal einen Ordner erstelle und die Rechte vergebe.

    Code:
    set echo
    mkdir /tw-elektric
    chgrp cam /tw-elektric
    chown `whoami` /tw-elektric
    
    Nun habe ich das Problem, dass ich mit `whoami` ja den Buntzer Root herausbekomme, es sollte aber der normale Benutzer sein. Wie bekomme ich hier am Besten den Butzername rein, der angemeldet ist?

    Danke
    Gruß

    Ottscho
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 13.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    erm, whoami zeigt dir den benutzer an, unter welchem das skript ausgeführt wurde. who sollte dir alle angemeldeten benutzer zeigen. (wobei der xserver ja unter root läuft und ich root dort nicht finden kann, von daher stimmt das vielleicht doch nicht so ganz, kA..)
     
  4. #3 tw-elektric, 13.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    who zeigt mir folgendes unter root:
    Code:
    TW80:~> su
    Password: 
    root@TW80:/home/ottbe# who
    ottbe    tty7         2008-03-13 11:58 (:0)
    ottbe    pts/0        2008-03-13 12:00 (:0.0)
    ottbe    pts/1        2008-03-13 12:00 (:0.0)
    ottbe    pts/2        2008-03-13 12:42 (:0.0)
    
    nun wäre ottbe das richtige. mache ich das ganze auf einem anderen rechner:
    Code:
    TW80:~> ssh 192.92.130.172 -l root
    root@192.92.130.172's password: 
    Last login: Mon Mar 10 16:18:03 2008 from edvgenesis.local
    Linux tw87 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    root@tw87:~# who
    louis    tty7         2008-03-13 09:31 (:0)
    louis    pts/0        2008-03-13 09:31 (:0.0)
    louis    pts/1        2008-03-13 11:32 (:0.0)
    root     pts/2        2008-03-13 12:44 (tw80.local)
    root@tw87:~#
    
    nun wäre louis das was ich benötige. sprich, tty7 bringt das ergebnis, welches ich gerne hätte. nur wie bekomme ich jetzt aus dem ganzen nur den benutzer "louis" oder "ottbe" heraus?

    Danke
     
  5. #4 Gott_in_schwarz, 13.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    hm, ich dachte der xserver (der ja auf tty7 läuft) würde von root gestartet werden. vielleicht sind meine informationen auch veraltet. hm, wenn der "normale" benutzer immer der ist, der auf tty7 (x) angemeldet ist, könnte man das ja einfach so machen:
    Code:
    who|awk '{if ($0 ~ /tty7/) print $1}'
    das durchsucht die jeweilige zeile nach dem string tty7 (eigentlich eine regex, aber es werden keine regex "erweiterungen" benutzt, es kommt quasi einer string-suche gleich..) und gibt dann das erste feld aus, wobei das erste feld hier der benutzer ist. felder sind per default durch leerzeichen getrennt in awk.
    wobei das ja irgendwie auch davon abhängig ist, dass ein xserver läuft, oder? kA, was definiert denn eigentlich für dich einen "normalen" benutzer?

    also ich hör jetzt mal lieber auf hier wild "lösungen" zu versprühen, nachher verletzt sich noch jemand :X
     
  6. #5 tw-elektric, 13.03.2008
    Zuletzt bearbeitet: 13.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    funktioniert bestens :) vielen dank...
    es ist so, die user kommen morgens und melden sich am rechner (ubuntu) mit dem username an. dieser besteht in der regel aus nachname und ersten zwei buchstaben des vornamens. nun sind es ca. 10 client, und ich muss des öfteren änderungen vornehmen. so wie jetzt, nämlich einen neuen ordner erstellen, rechte setzten und dann später in der fstab noch einen nfs eintrag erstellen.

    nun habe ich die möglichkeit mit m23server scripte zu verteilen und auf den clients als root auszuführen :D
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    jetzt stehe ich wieder auf dem schlauch... mache ich das ganze unter dem user:
    Code:
    TW80:~> set test = `who | awk '{if ($0 ~ /tty7/) print $1}'`
    TW80:~> echo $test
    ottbe
    
    funktionert es so wie ich möchte.
    und wenn ich root bin, funktioniert der befehl, aber nicht dass in eine variable schreiben:
    Code:
    TW80:~> su
    Password: 
    root@TW80:/home/ottbe# set test = `who | awk '{if ($0 ~ /tty7/) print $1}'`
    root@TW80:/home/ottbe# echo $test
    
    root@TW80:/home/ottbe# who | awk '{if ($0 ~ /tty7/) print $1}'
    ottbe
    root@TW80:/home/ottbe#
    
    muss ich unter root was beachten?
     
  7. #6 Gott_in_schwarz, 13.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    wer zwingt dich eigentlich set zu benutzen?
    Code:
    foo=$(echo 'ich bin der output eines echo-kommandos')
    bar=`echo 'ich auch'`
    ....
    funktioniert hier... (gnu bash)
     
  8. #7 tw-elektric, 13.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    ich habe nicht die normale bash, sonder csh ;)
    so viel ich weiß, brauche ich da SET.
     
  9. Gast1

    Gast1 Guest

  10. #9 tw-elektric, 25.03.2008
    Zuletzt bearbeitet: 25.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    sry, habe ich nicht gelesen. habe es eben schnell überflogen, aber
    nun habe ich nichts gefunden, warum der Befehl
    Code:
    set username = `who | awk '{if ($0 ~ /tty7/) print $1}'`
    
    unter dem User geht, und unter root nicht. Hat mir jmd einen Tipp heute morgen?

    Danke
    Gruß

    tw-elektric

    edit... ich habe es gelöst. mir ist eben aufgefallen, dass der root user unter der bash arbeitet und der benutzer unter der csh... sorry.

    Danke, gruß TW
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    oh man, ich tue mich so verdammt schwer, mit diesen shell scripten.
    ich möchte nun anschließend nach der Ordnererstellung einen Eintrag in die fstab editieren:
    Code:
    sed 's/#  SRV01  #\r\n###########/#  SRV01  #\r\n###########/\r\n\/\/192.92.130.20\/tw-elektric	\/tw-elektric	cifs	auto,username=$username,password=genesis,uid=$username,gid=cam	0	0/g' /etc/fstab
    
    Fehler:
    sed: -e Ausdruck #1, Zeichen 57: unknown option to `s'

    Habe ich nun ein Problem mit den vielen /\ etc. oder ist der SED Befehl einfach nur falsch?
    Sollte doch so sein:
    sed 's/to_be_replaced/replaced/g' dateiname.txt

    Danke für eure Hilfe.
    Gruß
    TW
     
  11. #10 Wolfgang, 25.03.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Das wäre ein neuer Thread gewesen.

    Wie du siehst, ist die verwendete Shell schon von Bedeutung. ;)

    Dein sed Befehl ist auf jeden Fall falsch.
    Was bitte möchtest du denn durch was ersetzen?

    Das kann ich deinem Versuch nämlich nicht entnehmen.

    Wolfgang
     
  12. #11 tw-elektric, 25.03.2008
    tw-elektric

    tw-elektric Eroberer

    Dabei seit:
    07.12.2007
    Beiträge:
    63
    Zustimmungen:
    0
    folgendermaßen sieht meine fstab aus:
    Code:
    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    proc            /proc           proc    defaults        0       0
    # /dev/sda1
    UUID=c9344608-f2c1-4ff1-918c-a6be4c93befc /               ext3    defaults,errors=remount-ro 0       1
    # /dev/sda5
    UUID=58d09d30-9e1b-4d1b-98cc-49aca2744adf none            swap    sw              0       0
    /dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec 0       0
    /dev/fd0        /media/floppy0  auto    rw,user,noauto,exec 0       0
    
    #############
    #  SRVLX01  #
    #############
    192.92.130.19:/mnt/iscsi0/genesis	/genesis	nfs	rsize=8192,wsize=8192	0	0
    192.92.130.19:/mnt/iscsi0/dbs_genesis	/dbs_genesis	nfs	rsize=8192,wsize=8192	0	0
    
    ################
    #  CAM-Server  #
    ################
    192.92.130.21:/mnt/raid	/work/twraid	nfs	defaults	0	0
    192.92.130.21:/mnt/raid2/Archiv	/work/Archiv	nfs	defaults	0	0
    192.92.130.21:/mnt/raid3	/mnt/raid3	nfs	defaults	0	0
    
    #############
    #  SRV2003  #
    #############
    //192.92.130.12/Client	/wdsoft	cifs	auto,username=fehrenbachch,password=genesis	0	0
    
    ###########
    #  SRV01  #
    ###########
    //192.92.130.20/Genesis	/cam	cifs	auto,username=fehrenbachch,password=genesis	0	0
    //192.92.130.20/Produktionsdaten	/produktionsdaten	cifs	auto,username=fehrenbachch,password=genesis	0	0
    
    ###EOF###
    
    nun möchte ich unter dem
    ###########
    # SRV01 #
    ###########
    einen neuen Eintrag eingefügt wird.
    und zwar dieser hier:
    Code:
    //192.92.130.20/tw-elektric	/tw-elektric	cifs	auto,username=$username,password=genesis,uid=$username,gid=cam	0	0
    
     
  13. L0s3r

    L0s3r Tripel-As

    Dabei seit:
    22.09.2007
    Beiträge:
    216
    Zustimmungen:
    0
    Ort:
    MV
    Der Fehler wird verursacht von
    Code:
    sed 's/#  SRV01  #\r\n###########/#  SRV01  #\r\n###########[COLOR="Red"]/[/COLOR]\r\n\/\/192.92.130.20\/tw-elektric	\/tw-elektric	cifs	auto,username=$username,password=genesis,uid=$username,gid=cam	0	0/g' /etc/fstab
    (rot markiert das muss da weg)

    Allerdings weiß ich nicht, wie man $to_be_replaced mit Zeilenumbrüchen angibt (bei mir klappt das so nicht).
    $replaced ist bis auf Variablen die in einfache Anführungszeichen gesetzt werden müssen ok.
    Also aus $username mach '$username' und
    Code:
    sed 's/to_be_replaced/replaced/[COLOR="Red"]g[/COLOR]'
    das g am Ende wird nur gebraucht, wenn mehrere Ersetzungen durchgeführt werden sollen.
    Als letzte Anmerkung noch. Wenn die Ersetzung gleich in die Datei geschrieben werden soll, muss es heißen sed -i ... sonst wirds nur in der Shell ausgegeben.
     
  14. #13 Gott_in_schwarz, 25.03.2008
    Zuletzt bearbeitet: 25.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Du kannst quasi jedes Zeichen als Trennzeichen nehmen (der Übersichtlichkeit zur Liebe..). So würde es in perl gehen:
    Code:
    perl -pe 'undef $/;s|SRV01  #\n###########|$&\n//192.92.130.20/tw-elektric/tw-elektriccifsauto,username=$username,password=genesis,uid=$username,gid=cam00|s' /etc/fstab
    In sed weiß ich grade nicht, wie man den "single-line" mode anstellt, beziehungsweise bin zu faul zum Suchen. (Kannst du ja auch, ein Tip: man sed)

    Edit: hmpf, das singleline-flag braucht man hier auch gar nicht, weil sich das nur auf das "Verhalten" vom Punkt (matcht dann auch newlines) auswirkt...
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 L0s3r, 25.03.2008
    Zuletzt bearbeitet: 25.03.2008
    L0s3r

    L0s3r Tripel-As

    Dabei seit:
    22.09.2007
    Beiträge:
    216
    Zustimmungen:
    0
    Ort:
    MV
    Also mit sed 'N;s/... gehts.
    Code:
    sed -i 'N;s/#  SRV01  #\n###########/#  SRV01  #\n###########\n\/\/192.92.130.20\/tw-elektric	\/tw-elektric	cifs	auto,username='$username',password=genesis,uid='$username',gid=cam	0	0/' /etc/fstab
     
  17. #15 Gott_in_schwarz, 25.03.2008
    Zuletzt bearbeitet: 25.03.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Hm,
    Ich bin mir nicht sicher, aber ich glaube, dann hat man immer zwei Reihen zusammen. Das müsste heißen, dass immer die erste und zweite "gejoint" werden, die dritte und vierte etc.
    Afaik. Das sollte man vielleicht noch wissen. Wobei man natürlich sooft "N" ausführen kann wie man will/lustig ist...

    Und mein Kommando sollte man besser auch so schreiben:
    Code:
    perl -pe 'BEGIN {undef $/} s|SRV01  #\n###########|$&\n//192.92.130.20/tw-elektric/tw-elektriccifsauto,username=$username,password=genesis,uid=$username,gid=cam00|' /etc/fstab
    Dann gilt das "neue" $/ schon ab "Zeile 1"..

    Und ein Trennzeichen jenseits des slashes empfiehlt sich auch für sed, wenn man so viele slashes benutzt...

    [Edit]: Ich weiß jetzt nicht, wie klar das geworden ist, aber das hier:
    bedeutet letztlich, dass das Kommando nur funktioniert, wenn die erste Zeile der match-regex ungerade ist (was sie hier ist: Zeile 31). Wenn sie gerade ist funktioniert das Kommando so nicht mehr. (Man füge irgendeine Zeile vor "# SRV01 #" ein und schon funktioniert es nicht mehr..) Deswegen am Besten die erste Zeile matchen und dann "N" ausführen (und damit die nächste Zeile mit dem aktuellen "patternspace" joinen) und danach erst den s-Befehl. Außerdem kennt sed auch die "&" Variable. (Beziehungsweise vielleicht hat perl die sogar von da "übernommen"..)
    Code:
    sed -e '/#  SRV01  #/N;s|#  SRV01  #\n###########|&\n//192.92.130.20/tw-elektric/tw-elektriccifsauto,username='$username',password=genesis,uid='$username',gid=cam00|' /etc/fstab
     
Thema:

Benutzer ermitteln

Die Seite wird geladen...

Benutzer ermitteln - Ähnliche Themen

  1. PHP Skripte werden nur im Verzeichnis des jeweiligen Benutzers ausgeführt

    PHP Skripte werden nur im Verzeichnis des jeweiligen Benutzers ausgeführt: Hallo zusammen, ich bin mit meinen Domains auf einen neuen Webserver umgezogen. Ein Teil meiner Domains lief auf Drupal als...
  2. Bareos 15.2 mit neuer Benutzeroberfläche

    Bareos 15.2 mit neuer Benutzeroberfläche: Die freie Backup-Lösung Bareos wurde in Version 15.2 veröffentlicht. Die Neuerungen der aktuellen Version umfassen unter anderem eine verbesserte...
  3. Richtlinien für Gnome-Benutzerschnittstelle aktualisiert

    Richtlinien für Gnome-Benutzerschnittstelle aktualisiert: Das Gnome-Projekt hat seine Richtlinien, wie die Benutzerschnittstelle von Anwendungen aussehen sollte, in einer neuen Fassung veröffentlicht....
  4. Garrett: Intel Boot Guard contra Benutzerfreiheit

    Garrett: Intel Boot Guard contra Benutzerfreiheit: Mit dem Boot Guard hat Intel einen neuen Sicherheitsmechanismus geschaffen, der das Ersetzen des BIOS durch eine manipulierte Version verhindern...
  5. Git 2.2 ist schneller und benutzerfreundlicher

    Git 2.2 ist schneller und benutzerfreundlicher: Die Git-Entwickler haben ihre freie Versionsverwaltung auf die Version 2.2 aktualisiert und in dem Zusammenhang über 550 Neuerungen, Änderungen...