per bash-script prüfen, ob laufwerk gemountet oder nicht
per bash-script prüfen, ob laufwerk gemountet oder nicht
Hallo zusammen !
Ich gebe es offen zu. In Sachen Bash-Programmierung bin ich ein Schwachmat <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> Daher hier meine Anfrage.
ich möchte die Ausführung eines Scriptes davon abhängig machen, ob ein bestimtes Laufwerk gemountet ist.
so in etwa
if ($drive_mountet)
{
runscript;
}
else
{
echo "Laufwerk nicht gemountet !";
}
Wie kann ich das mit einem Bash-Script umsetzten ?
Danke ... Stephan !
Ich gebe es offen zu. In Sachen Bash-Programmierung bin ich ein Schwachmat <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> Daher hier meine Anfrage.
ich möchte die Ausführung eines Scriptes davon abhängig machen, ob ein bestimtes Laufwerk gemountet ist.
so in etwa
if ($drive_mountet)
{
runscript;
}
else
{
echo "Laufwerk nicht gemountet !";
}
Wie kann ich das mit einem Bash-Script umsetzten ?
Danke ... Stephan !
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
In `/proc/mounts' stehen doch alle gemounteten Dateisysteme. Das Format ist selbsterklärend bzw. fstab-like.
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Hoi !
Das ist schonmal ein Hinweis, danke.
Allerdings kenne ich mich mit der Programmierung zu wenig aus, als das ich das selber hinbekommen würde.
Grüße, Stephan !
Das ist schonmal ein Hinweis, danke.
Allerdings kenne ich mich mit der Programmierung zu wenig aus, als das ich das selber hinbekommen würde.
Grüße, Stephan !
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
#!/bin/sh
if cat /proc/mounts | grep /dev/hda1 > /dev/null; then
echo "gemountet"
else
echo "nicht gemountet"
fi
exit 0
setze an /dev/hda1 ein mountpoint deiner wahl
if cat /proc/mounts | grep /dev/hda1 > /dev/null; then
echo "gemountet"
else
echo "nicht gemountet"
fi
exit 0
setze an /dev/hda1 ein mountpoint deiner wahl
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Wenn /dev/fd0 unter /mnt/dev/hda1 gemountet ist, sagt joersch's Script ebenfalls: /dev/hda1 ist gemountet ...
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
@scripter:
das script war als denkanstoss zu betrachten, wie diese sache einfach geloest werden koennte,
nicht als alle-eventualitaeten-abdeckendes-super-programm
ich vermisse allerdings in deinem posting deinen loesungsvorschlag <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Gruss
das script war als denkanstoss zu betrachten, wie diese sache einfach geloest werden koennte,
nicht als alle-eventualitaeten-abdeckendes-super-programm
ich vermisse allerdings in deinem posting deinen loesungsvorschlag <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Gruss
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Ein paar Kommentare meinerseits:
<li>/proc/mounts würde ich nicht verwenden. Jeder User darf "mount" ohne Argumente aufrufen und erhält dann eine Liste der gemounteten Dateisysteme; das ist standardisiert und funktioniert so unter Solaris, HP-UX, AIX, *BSD und sogar unter Linux! <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> Wer weiss, ob /proc/mounts in Linux 2.6 noch existiert...
<li><flame>Wann stirbt endlich dieses unsägliche "cat datei | kommando" aus? Ein einfaches "kommando < datei" ist im Endergebnis effektiver, da kein Prozess für das unnütze "cat" gestartet werden muss.</flame> Kein persönlicher Vorwurf, joersch, aber das musste mal raus... Wenn man wie o.a. portabel arbeitet, ersetzt man das cat auch nur durch ein mount, aber es würde ja auch niemand auf die Idee kommen, ein "mount | cat | grep" zu programmieren, oder? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
<li>scripter hat schon recht mit seinem Einwand, dass in dem Skript noch ein Problemchen drinne steckt, joersch mit seiner Antwort auch - nur keiner gibt dann die wirklich einfache Lösung vor? Also:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/sh
if mount | grep '^/dev/hda1 ' >/dev/null 2>&1 ; then
echo "gemountet"
else
echo "nicht gemountet"
fi
exit 0</font><hr></pre></blockquote>
Also mount statt des "cat /proc/mounts" und einen korrekten Regulären Ausdruck zum grep, der nur Treffer ab Zeilenanfang (^) von /dev/hda1, gefolgt von einem Leerzeichen zulässt. Das Leerzeichen ist notwendig, damit ein gemountetes /dev/hda11 nicht zum Treffer wird.
Na ja, habe ich mal wieder den Oberlehrer raushängen lassen... Sorry nochmals.
Jochen
<li>/proc/mounts würde ich nicht verwenden. Jeder User darf "mount" ohne Argumente aufrufen und erhält dann eine Liste der gemounteten Dateisysteme; das ist standardisiert und funktioniert so unter Solaris, HP-UX, AIX, *BSD und sogar unter Linux! <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle"> Wer weiss, ob /proc/mounts in Linux 2.6 noch existiert...
<li><flame>Wann stirbt endlich dieses unsägliche "cat datei | kommando" aus? Ein einfaches "kommando < datei" ist im Endergebnis effektiver, da kein Prozess für das unnütze "cat" gestartet werden muss.</flame> Kein persönlicher Vorwurf, joersch, aber das musste mal raus... Wenn man wie o.a. portabel arbeitet, ersetzt man das cat auch nur durch ein mount, aber es würde ja auch niemand auf die Idee kommen, ein "mount | cat | grep" zu programmieren, oder? <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
<li>scripter hat schon recht mit seinem Einwand, dass in dem Skript noch ein Problemchen drinne steckt, joersch mit seiner Antwort auch - nur keiner gibt dann die wirklich einfache Lösung vor? Also:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/sh
if mount | grep '^/dev/hda1 ' >/dev/null 2>&1 ; then
echo "gemountet"
else
echo "nicht gemountet"
fi
exit 0</font><hr></pre></blockquote>
Also mount statt des "cat /proc/mounts" und einen korrekten Regulären Ausdruck zum grep, der nur Treffer ab Zeilenanfang (^) von /dev/hda1, gefolgt von einem Leerzeichen zulässt. Das Leerzeichen ist notwendig, damit ein gemountetes /dev/hda11 nicht zum Treffer wird.
Na ja, habe ich mal wieder den Oberlehrer raushängen lassen... Sorry nochmals.
Jochen
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
@jochen:
wieder was dazugelernt: statt cat datei | grep xxx -> grep xxx < datei
danke
zu mount <-> cat /proc/mount : ich hatte schon den fall, das beide kommandos unterschiedliche ergebnisse ergaben: mount liest /etc/mtab aus, (versuche: echo "/dev/sdc5 /mnt ext3 rw 0 0 >> /etc/mtab" ; mount)
mount muss also nix mit der wirklichen situation in deinem rechner zu tun haben (problem wie gesagt selbst gehabt, def. festplatte wurde immernoch angezeigt obwohl physikalisch umountet)
daher meine tendenz zu /proc/mounts
inzwischen duerfte stephan genuegend material zusammenhaben um was eigenes zu schreiben <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
alle haben was gelernt (ich zumindestens), was ja sinn eines forums sein sollte, keine fertigen
abschreib-loesungen sondern denkanstoesse,
Danke Jörg
wieder was dazugelernt: statt cat datei | grep xxx -> grep xxx < datei
danke
zu mount <-> cat /proc/mount : ich hatte schon den fall, das beide kommandos unterschiedliche ergebnisse ergaben: mount liest /etc/mtab aus, (versuche: echo "/dev/sdc5 /mnt ext3 rw 0 0 >> /etc/mtab" ; mount)
mount muss also nix mit der wirklichen situation in deinem rechner zu tun haben (problem wie gesagt selbst gehabt, def. festplatte wurde immernoch angezeigt obwohl physikalisch umountet)
daher meine tendenz zu /proc/mounts
inzwischen duerfte stephan genuegend material zusammenhaben um was eigenes zu schreiben <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
alle haben was gelernt (ich zumindestens), was ja sinn eines forums sein sollte, keine fertigen
abschreib-loesungen sondern denkanstoesse,
Danke Jörg
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Hmmmja, die (englische) Manual-Page zu mount(8) geht auf den Unterschied von /proc/mounts und /etc/mtab ein. Prinzipiell hast Du ja recht, allerdings ist m.E. der Fall, dass /proc/mounts und /etc/mtab auseinanderlaufen, ziemlich pathologisch.
So etwas kann passieren, wenn das root-Dateisystem read-only gemountet ist. Das bedeutet, dass man entweder mittels "init=/bin/sh" gebootet hat (init gelöscht?!?) oder der fsck einen auf die Shell geschmissen hat, weil er das root-FS nicht alleine reparieren kann. In beiden Fällen wird man erst mal kräftig Hand anlegen müssen, um das System wieder flott zu kriegen und sich nicht um irgendwelche User-Skripte kümmern, die erst wieder laufen, wenn die Kiste zur Gänze wieder flott ist.
Und wie in Deinem Beispiel an der Datei händisch Änderungen vorzunehmen - na, das war halt ein Beispiel, nicht? Kein denkender Admin macht sowas an seinem System.
Und zu guter letzt denke ich immer an die vielen Systeme, die statt einer /etc/mtab eine /etc/mnttab haben oder die gar kein /proc/mounts besitzen, auf denen aber "mount" immer die gewünschte Ausgabe liefert... Heterogene Netze bringen einen auch in der Skripterei ziemlich schnell dazu, immer den kleinsten gemeinsamen Nenner zu verwenden.
Aber das ist alles Philosophie - beides geht, beides hat seine Berechtigung. Und Stephan hat sein Skript wahrscheinlich schon längst fertig. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Jochen
So etwas kann passieren, wenn das root-Dateisystem read-only gemountet ist. Das bedeutet, dass man entweder mittels "init=/bin/sh" gebootet hat (init gelöscht?!?) oder der fsck einen auf die Shell geschmissen hat, weil er das root-FS nicht alleine reparieren kann. In beiden Fällen wird man erst mal kräftig Hand anlegen müssen, um das System wieder flott zu kriegen und sich nicht um irgendwelche User-Skripte kümmern, die erst wieder laufen, wenn die Kiste zur Gänze wieder flott ist.
Und wie in Deinem Beispiel an der Datei händisch Änderungen vorzunehmen - na, das war halt ein Beispiel, nicht? Kein denkender Admin macht sowas an seinem System.
Und zu guter letzt denke ich immer an die vielen Systeme, die statt einer /etc/mtab eine /etc/mnttab haben oder die gar kein /proc/mounts besitzen, auf denen aber "mount" immer die gewünschte Ausgabe liefert... Heterogene Netze bringen einen auch in der Skripterei ziemlich schnell dazu, immer den kleinsten gemeinsamen Nenner zu verwenden.
Aber das ist alles Philosophie - beides geht, beides hat seine Berechtigung. Und Stephan hat sein Skript wahrscheinlich schon längst fertig. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Jochen
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Hallo zusammen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Danke für die Hilfe. Werde das Script heute abend mal ausprobieren. Würde mir wirklich weiterhelfen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Grüße ... Stephan !
Danke für die Hilfe. Werde das Script heute abend mal ausprobieren. Würde mir wirklich weiterhelfen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Grüße ... Stephan !
Re: per bash-script prüfen, ob laufwerk gemountet oder nicht
Hallo zusammen !
Habe das Script getestet und verwertet. Alles funktioniert prima <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Vielen Dank an alle Antwort-Geber <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Grüße, Stephan !
Habe das Script getestet und verwertet. Alles funktioniert prima <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Vielen Dank an alle Antwort-Geber <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Grüße, Stephan !