tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
710
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kle-ben kle-ben ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    492
    Hi,

    ich würde gerne irgendwie benachrichtigt werden wenn ein device gemountet oder unmounted wird.
    Ist das irgendwie möglich? Oder muss ich dazu in regelmäßigen Abständen /proc/mounts parse?

    Vielleicht hat jemand von euch eine elegantere Idee.

    Viele Grüße
    Ben
     
    Theorie ist Wissen, das nicht funktioniert.
    Praxis ist, wenn alles funktioniert und man weiß nicht warum

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    du könntest über ein Netlink-Socket auf uevents horchen und dir dort die Mount-Events rausfischen.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    kle-ben kle-ben ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    492
    Hi,

    ich habe mir nun die Netlink-Sockets mal genauer angeschaut aber so richtig schlau wird man daraus nicht.
    Heist das das ich ein eigenes Kernelmodul schreiben muss das die Information verschickt o der kann
    das Netlink schon. Ich hab keine Informationen darueber gefunden was ich dann fuer eine Nachricht verschicken
    muss um dann solche Nachrichten zugesendet zu bekommen.
     
    Theorie ist Wissen, das nicht funktioniert.
    Praxis ist, wenn alles funktioniert und man weiß nicht warum

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von kle-ben Beitrag anzeigen
    Hi,

    ich habe mir nun die Netlink-Sockets mal genauer angeschaut aber so richtig schlau wird man daraus nicht.
    Heist das das ich ein eigenes Kernelmodul schreiben muss das die Information verschickt o der kann
    das Netlink schon. Ich hab keine Informationen darueber gefunden was ich dann fuer eine Nachricht verschicken
    muss um dann solche Nachrichten zugesendet zu bekommen.
    Nein, ein Kernelmodul musst du dafür nicht schreiben. Du musst dich nur zur Gruppe NETLINK_KOBJECT_UEVENT verbinden (3. Parameter bei socket) und bekommst die Nachrichten dann über das Socket zugestellt. Wie man die Nachrichten ausliest, ist in der verlinkten Manpage unter „Examples“ beschrieben.

    \edit: Wie es scheint, versenden aktuelle Linux-Kernel keine Mount-Events mehr über Netlink. Sorry für die Falschinformation.

    Grüße,
    Matthias
    Geändert von Matthias Reitinger (15.04.10 um 01:10 Uhr)
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  5. #5
    kle-ben kle-ben ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    492
    Hm okay, dann muss ich wohl doch die /proc/mounts parsen.

    Ich hab das grade mal versucht nur lässt sich die Datei irgendwie nicht öffnen.
    Nur wenn ich mein Programm mit root Rechten starte.

    Auf der Konsole kann ich die Datei einfach mit cat ausgeben ohne root Rechte.
    mounts ist ein link mit den Rechten 777. Er verweist auf self/mounts.
    Und self ist wieder ein Link mit den Rechten 777. Er verweist auf {nummer}
    wobei {nummer} eine Ziffernfolge ist die sich bei jedem ls verändert. (sieht nach einem Zähler aus)
    {nummer} hat auf jedenfall immer die Rechte 555
    Die Datei Mounts in self hat die Rechte 444. Ich hab also egal wer auch immer ich bin das
    Recht die Datei zu lesen. Woran könnte das sonst noch liegen das ich die
    Datei nicht bzw nur mit root Rechten öffnen kann.

    Vielen Dank!


    Gruß Ben
     
    Theorie ist Wissen, das nicht funktioniert.
    Praxis ist, wenn alles funktioniert und man weiß nicht warum

  6. #6
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von kle-ben Beitrag anzeigen
    Hm okay, dann muss ich wohl doch die /proc/mounts parsen.
    Das müsstest du sowieso, wenn du dein Programm beim Start erst mal auf den aktuellen Stand bringen willst. Aber ist ja auch kein riesiger Aufwand, da es dafür sowieso fertige Funktionen gibt.

    Zitat Zitat von kle-ben Beitrag anzeigen
    Ich hab das grade mal versucht nur lässt sich die Datei irgendwie nicht öffnen.
    Nur wenn ich mein Programm mit root Rechten starte.

    Auf der Konsole kann ich die Datei einfach mit cat ausgeben ohne root Rechte.
    mounts ist ein link mit den Rechten 777. Er verweist auf self/mounts.
    Und self ist wieder ein Link mit den Rechten 777. Er verweist auf {nummer}
    wobei {nummer} eine Ziffernfolge ist die sich bei jedem ls verändert. (sieht nach einem Zähler aus)
    {nummer} hat auf jedenfall immer die Rechte 555
    Die Datei Mounts in self hat die Rechte 444. Ich hab also egal wer auch immer ich bin das
    Recht die Datei zu lesen. Woran könnte das sonst noch liegen das ich die
    Datei nicht bzw nur mit root Rechten öffnen kann.
    Da wäre es jetzt interessant zu wissen, wie deine konkrete Implementierung aussieht. Die Nummer, die du beschreibst, ist übrigens die Prozess-ID. Der Verweis auf /proc/self ist notwending, da jeder Prozess einen eigenen Mount-Namensraum besitzt.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  7. #7
    kle-ben kle-ben ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Beiträge
    492
    Zitat Zitat von Matthias Reitinger Beitrag anzeigen
    Das müsstest du sowieso, wenn du dein Programm beim Start erst mal auf den aktuellen Stand bringen willst. Aber ist ja auch kein riesiger Aufwand, da es dafür sowieso fertige Funktionen gibt.
    Danke für die Referenz das macht es um einiges einfacher. Das andere Problem hat sich bereits gelöst. Als ich mir meinen Code nochmal angeschaut hab hab ich gesehn das ich das i vor dem ifstream vergessen hatte. Beim fstream werden aber noch Schreibrechte mitgesetzt und das geht bei einer Datei mit den Rechten 444 schlecht.

    Gruß Ben
     
    Theorie ist Wissen, das nicht funktioniert.
    Praxis ist, wenn alles funktioniert und man weiß nicht warum

Ähnliche Themen

  1. openSuse 11.2 Samba Mount funktioniert nicht
    Von Igor1312 im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 11.03.10, 09:41
  2. Bei TrueCrypt mount autorun.inf ausführen
    Von BillaBong im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 11.03.09, 09:20
  3. mount-Einstellungen für USB-Stick (SuSE 10.0)
    Von jokey2 im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 18.05.06, 17:41
  4. Partition nach mount nur unter root erkannt
    Von xjmdolby im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 05.07.04, 21:50
  5. Mount Fat32
    Von js-mueller im Forum Linux & Unix
    Antworten: 7
    Letzter Beitrag: 17.11.03, 15:31