glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Die Pfade sollen sich nur bei den Servervarianten unterscheiden und ansonsten sind sie immer gleich?
Irgendwie denke ich, dass ich noch immer missverstanden werde. gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.8
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 7814037168 sectors, 3.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): C89600D9-94C0-493E-92CA-2E35BBF0F439
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7814037134
Partitions will be aligned on 2048-sector boundaries
Total free space is 3693 sectors (1.8 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 194559 94.0 MiB EF02
2 194560 9959423 4.7 GiB 8300 # Trusty Server
3 9959424 19724287 4.7 GiB 8300 # Reserve Server
4 19724288 58785791 18.6 GiB 8300 # Xubuntu
5 58785792 60127231 655.0 MiB 8200
6 60127232 7814035455 3.6 TiB 8300 Anders formuliert: /dev/sda2 Trusty Server
/dev/sda3 Reserve Server
/dev/sda4 Xubuntu Wenn also /dev/sda2 gestartet wird, dann entspricht das Ubuntu Server und wenn /dev/sda4 dann entspricht das in diesem Fall Xubuntu. Eine Bash-Variable (Pfad) in einem Script ist abhängig davon, wie nun gestartet wurde. In diesem Fall gibt es einige Möglichkeiten das zu erkennen. Nun möchte ich das aber möglichst allgemein coden, sodass es auch auf anderen PCs passt, dh es könnte /dev/sda2 auch Xubuntu sein. Wie schon geschrieben, es lässt sich relativ leicht abfragen, ob Xubuntu installiert ist, indem man nach xfce-Paketen sucht und es wird davon ausgegangen, dass nicht XFCE-Pakete zur Server-Installation hinzugefügt werden. Ich habe aber noch keine Lösung, woran ich eine Server-Installation erkenne. Der Umkehrschluss von "ist nicht Xubuntu" ist nur bedingt zulässig und das versuche ich zu vermeiden. Ich wiederhole mich, es sollte möglichst allgemein funktionieren und nicht speziell auf einen bestimmten PC abgestimmt sein.
|
g00d.morning
Anmeldungsdatum: 20. Februar 2013
Beiträge: 330
|
glaskugel schrieb: Die Pfade sollen sich nur bei den Servervarianten unterscheiden und ansonsten sind sie immer gleich?
Irgendwie denke ich, dass ich noch immer missverstanden werde.
Nein, Du hast mich nicht verstanden.
Eine Bash-Variable (Pfad) in einem Script ist abhängig davon, wie nun gestartet wurde.
Warum?
|
iXwin
Anmeldungsdatum: 8. September 2014
Beiträge: 150
|
"Irgendwie denke ich, dass ich noch immer missverstanden werde." Scheint so. Weil keiner weiss, was eigentlich Dein Ziel ist. "Nun wird also dieser PC entweder als Server- oder als Xubuntu-Installation gestartet. Nun möchte ich für ein Script gerne wissen wie der PC hochgefahren wurde" Wenn Du nur wissen willst, welche Installation gerade läuft, gibt es zig doch Varianten. Zugegeben in "top" jede wackelnde Zeile lesen, um nach X-Server Prozessen zu suchen, ist zu umständlich. Dann schau doch einfach nach welche Partition in gemountet ist. | sudo blkid -o list -w /dev/null
|
(not mounted) läuft gerade nicht. | device fs_type label mount point UUID
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/dev/sda1 ext2 (not mounted) xx
/dev/sda5 LVM2_member (in use) xxyx
/dev/sdb1 ext2 (not mounted) xxx
/dev/sdb2 ext4 /
|
|
glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Dann schau doch einfach nach welche Partition in gemountet ist.
Das verstehe ich nicht, was mir das bringen soll. Ich habe ja geschrieben es soll allgemein gültig sein und nicht für einen bestimmten PC. Außerdem sind die Partitionen der anderen Distris auch gemountet. if [ "$Distri" = "Server" ]; then
Pfad="/daten/a/"
elif [ "$Distri" = "Xubuntu" ]; then
Pfad="/daten/b/"
fi
cp $Datei $Pfad Ist es jetzt klarer worum es geht? Würde ich keine unterschiedlichen Pfade verwenden, würde die Datei überschrieben werden, was unerwünscht ist. Vielleicht hilft auch das zum Verständnis: ~# df -hT
Dateisystem Typ Größe Benutzt Verf. Verw% Eingehängt auf
/dev/sda4 ext4 19G 14G 3,9G 78% /
none tmpfs 4,0K 0 4,0K 0% /sys/fs/cgroup
udev devtmpfs 1,8G 4,0K 1,8G 1% /dev
tmpfs tmpfs 369M 1,4M 368M 1% /run
none tmpfs 5,0M 0 5,0M 0% /run/lock
none tmpfs 1,8G 72K 1,8G 1% /run/shm
none tmpfs 100M 12K 100M 1% /run/user
/dev/sda3 ext4 4,5G 9,4M 4,3G 1% /distri2
/dev/sda6 xfs 3,7T 2,8T 846G 78% /daten
/dev/sda2 ext4 4,5G 9,4M 4,3G 1% /distri1
|
glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Zugegeben in "top" jede wackelnde Zeile lesen, um nach X-Server Prozessen zu suchen, ist zu umständlich.
Das könnte ein Ansatz sein um einen Server zu identifizieren. Wenn ich keinen Denkfehler habe, dann sollte bei einem Server folgende Abfrage leer sein: aptitude search xserver | grep ^i
i x11-xserver-utils - X-Server-Werkzeuge
i xserver-common - Gemeinsame Dateien, die von verschiedenen
i xserver-xorg - X.Org-X-Server
i xserver-xorg-core - X.Org-X-Server – Haupt-Server
i xserver-xorg-dev - X.Org-X-Server – Entwicklungsdateien
i xserver-xorg-input-all - X.org-X-Server -- Metapaket für Eingabeger
i xserver-xorg-input-evdev - X.Org-X-Server – evdev-Eingabegeräte-Treib
i xserver-xorg-input-mouse - X.Org-X-Server – Maus-Eingabegeräte-Treibe
i xserver-xorg-input-synaptics - X.Org-X-Server – Synaptics-Eingabegerätetr
i xserver-xorg-input-vmmouse - X.Org-X-Server – VMMouse-Eingabegeräte-Tre
i xserver-xorg-input-wacom - X.Org-X-Server – Wacom-Eingabegerätetreibe
i xserver-xorg-video-all - X.org-X-Server -- Metapaket für Ausgabeger
i xserver-xorg-video-ati - X.Org-X-Server – AMD/ATI-Grafiktreiber-Hül
i xserver-xorg-video-cirrus - X.Org-X-Server – Cirrus-Grafiktreiber
i xserver-xorg-video-fbdev - X.Org-X-Server – fbdev-Grafiktreiber
i xserver-xorg-video-glamoregl - X.Org X server -- graphics acceleration mo
i xserver-xorg-video-intel - X.Org-X-Server – Intel-i8xx/i9xx-Grafiktre
i xserver-xorg-video-mach64 - X.Org-X-Server – ATI-Mach64-Grafiktreiber
i xserver-xorg-video-mga - X.Org-X-Server – MGA-Grafiktreiber
i xserver-xorg-video-modesetting - X.Org-X-Server – Generischer modesetting-T
i xserver-xorg-video-neomagic - X.Org-X-Server – Neomagic-Grafiktreiber
i xserver-xorg-video-nouveau - X.Org-X-Server -- Anzeigetreiber Nouveau
i xserver-xorg-video-openchrome - X.Org-X-Server – VIA-Unichrome-Grafiktreib
i xserver-xorg-video-qxl - X.Org-X-Server – QXL-Grafiktreiber
i xserver-xorg-video-r128 - X.Org-X-Server – ATI-r128-Grafiktreiber
i xserver-xorg-video-radeon - X.Org-X-Server – AMD/ATI-Radeon-Grafiktrei
i xserver-xorg-video-s3 - X.Org-X-Server – S3-Grafiktreiber (für alt
i xserver-xorg-video-savage - X.Org-X-Server – Savage-Grafiktreiber
i xserver-xorg-video-siliconmotio - X.Org-X-Server – SiliconMotion-Grafiktreib
i xserver-xorg-video-sis - X.Org-X-Server – SiS-Grafiktreiber
i xserver-xorg-video-sisusb - X.Org-X-Server – SiS-USB-Grafiktreiber
i xserver-xorg-video-tdfx - X.Org-X-Server – tdfx-Grafiktreiber
i xserver-xorg-video-trident - X.Org-X-Server – Trident-Grafiktreiber
i xserver-xorg-video-vesa - X.Org-X-Server – VESA-Grafiktreiber
i xserver-xorg-video-vmware - X.Org-X-Server – VMware-Grafiktreiber
|
iXwin
Anmeldungsdatum: 8. September 2014
Beiträge: 150
|
Wenn Du weisst, unter welche Partitionen Dein Server steckt. Wie Du hier gepostet hast: | /dev/sda2 Trusty Server
/dev/sda3 Reserve Server
/dev/sda4 Xubuntu
|
Dann müsstest Du mit:
| sudo blkid -o list -w /dev/null
|
angezeigt bekommen, welche Partition gemounted ist. Sprich ob z.B. /dev/sda2 - Trusty Server "eingehangen" wurde. Wenn dort steht (not mounted). Dann läuft gerade eine andrere Installation. z.B. /dev/sda4 Xubuntu müsste dort ein schlichtes "/" stehen. Poste dies doch mal. Dein Denkfehler ist, dass Du immer auf Pfade rumreitest. 😉 Wenn eine Partition nicht gemountet ist, gibt es auch keine Pfade. ABER, bevor ich hier einen Denkfehler habe: | /dev/sda4 ext4 19G 14G 3,9G 78% /
none tmpfs 4,0K 0 4,0K 0% /sys/fs/cgroup
udev devtmpfs 1,8G 4,0K 1,8G 1% /dev
tmpfs tmpfs 369M 1,4M 368M 1% /run
none tmpfs 5,0M 0 5,0M 0% /run/lock
none tmpfs 1,8G 72K 1,8G 1% /run/shm
none tmpfs 100M 12K 100M 1% /run/user
/dev/sda3 ext4 4,5G 9,4M 4,3G 1% /distri2
/dev/sda6 xfs 3,7T 2,8T 846G 78% /daten
/dev/sda2 ext4 4,5G 9,4M 4,3G 1% /distri1
|
Zeigt, dass alle Partitionen gemountet sind. also diese: | /dev/sda2 Trusty Server
/dev/sda3 Reserve Server
/dev/sda4 Xubuntu
|
Das versteh ich nicht, wenn es unterschiedliche Installationen gibt.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12802
|
glaskugel schrieb:
Das könnte ein Ansatz sein um einen Server zu identifizieren. Wenn ich keinen Denkfehler habe, dann sollte bei einem Server folgende Abfrage leer sein:
Man kann auch dpkg-query nehmen. Probier doch dies mal aus: | if dpkg-query -l | awk '/^ii/ {if ($2 ~ /buntu-desktop$/) exit 1}'; then echo desktop; else echo server; fi
|
Ciao robert
|
glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Wie schon früher geschrieben, diese else-Variante möchte ich vermeiden, vielleicht gibt es ja irgendwo ein Kubuntu installiert. Entscheidend ist, dass "aptitude search xserver | grep ^i" kein Ergebnis beim Server bringt und auf diese Weise ein Server identifiziert werden kann. Ob man das mit dpkg-query abfragt, ist dann Feintuning. Ich verwende aus Gewohnheit aptitude.
|
iXwin
Anmeldungsdatum: 8. September 2014
Beiträge: 150
|
"Wie schonb früher geschrieben, diese else-Variante möchte ich vermeiden, vielleicht gibt es ja irgendwo ein Kubuntu installiert." Was macht den diese "else-Variante" böses? Komme mir langsam ein wenig veralbert vor. Ich mach hier nicht mehr mit. Jetzt taucht auch noch KDE auf. 😉 Ich habe "dpkg-query " vom rklm probiert. Das war meines m.E. ein zielführender Vorschlag.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Ich meine ich würde in rc.local reinschreiben | distrivariant=Xfce
# oder
distrivariant=server
distrivariant=server32
distrivariant=server64
distrivariant=kdö
|
oder in /etc/profile - soweit ich verstanden habe ist das ja bei allen Installationen unterschiedlich.
|
glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Was macht den diese "else-Variante" böses? Komme mir langsam ein wenig veralbert vor. Ich mach hier nicht mehr mit. Jetzt taucht auch noch KDE auf.
Och, sei doch nicht gleich beleidigt. Ich habe im Thread geschrieben, dass ich es möglichst allgemein halten will. Ich habe es ja auch schon mit dpkg-query probiert und bin nun am überlegen, wie es sich in das Gesamt-Script einpasst. Das mag auch schöner zu coden sein, aber das überlege ich mir, wenn das gesamte Script auch auf anderen PCs durchläuft. Augenblicklich gefällt mir da einiges nicht mehr, aber ich will nicht zuviel ändern, sonst läuft das Script vielleicht nicht mehr durch. case $RECHNERNAME in
....
nas)
NASDISTRI=`cat /etc/issue | grep -i "Ubuntu 14.04"`
if test -n "$NASDISTRI" ; then
FLAVOR=`dpkg-query -l | grep -i xfce`
if test -n "$FLAVOR" ; then
FLAVOR="trusty/xubuntu"
else
FLAVOR=`dpkg-query -l | grep -i xserver`
if test -z "$FLAVOR" ; then
FLAVOR="trusty/server"
else
echo "check NASDISTRI"
exit
fi
fi
....
Ich habe "dpkg-query " vom rklm probiert. Das war meines m.E. ein zielführender Vorschlag.
Ja natürlich, aber ich kann nicht jede Kleinigkeit erwähnen, die noch hinzukommt. Wichtig ist doch, dass ein Kriterium gefunden wurde, wie man eine Xubuntu-Installation bzw. Server-Installation identifiziert und wenn das Script auf Kubuntu trifft, dann beendet es sich und dann muss ich vermutlich nach einem installiertem kdm suchen.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Du hast oben 1000x gesagt, was Du alles nicht haben bzw. machen willst ... 😬 Sag doch bitte mal, was Dein Server hat, was die anderen (graphischen) Systeme nicht haben. Wenn Du das sagen kannst, dann kann man auch danach suchen ! z.B.: ist es womöglich charakteristisch für den "Server", dass das Verzeichnis /etc/apache2 existiert ? - oder eben, wie oben schon diskutiert, dass eben KEIN Xserver läuft ? (also z.B. die Ausgabe von ps -C Xorg --no-headers leer ist, bzw. "1" zurückgibt) LG, track
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12802
|
glaskugel schrieb: iXwin schrieb:
Och, sei doch nicht gleich beleidigt. Ich habe im Thread geschrieben, dass ich es möglichst allgemein halten will.
Das entbindet Dich leider nicht davon, uns mitzuteilen, was Du denn möchtest und was "allgemein" hier heißt - wenn Du Unterstützung haben möchtest.
Ich habe "dpkg-query " vom rklm probiert. Das war meines m.E. ein zielführender Vorschlag.
Ja natürlich, aber ich kann nicht jede Kleinigkeit erwähnen, die noch hinzukommt.
Wie jetzt? Ist es nun zielführend oder nicht?
Wichtig ist doch, dass ein Kriterium gefunden wurde, wie man eine Xubuntu-Installation bzw. Server-Installation identifiziert und wenn das Script auf Kubuntu trifft, dann beendet es sich und dann muss ich vermutlich nach einem installiertem kdm suchen.
Beschreibst Du mit "dann beendet es sich ..." ein Defizit meines Einzeilers oder ein gewünschtes Verhalten Deines Skriptes? Hast Du den Einzeiler ausprobiert? Ich glaube auch, dass das Hauptproblem ist, dass Du nicht formulieren kannst, was Du willst. Wenn Du das für Dich geklärt hast, dann kann man Dir auch zu einer Lösung raten. So lange das Ziel aber unklar ist, stochern wir hier im Nebel. Das ist wenig produktiv und macht auch nicht übermäßig viel Spaß. Du könntest damit anfangen mitzuteilen, was Du überhaupt unterscheiden willst. Geht es Dir um Server vs. Desktop? Geht es Dir darum, jede einzelne Installation zu identifizieren? Oder geht es Dir darum festzustellen, ob bestimmte Features (z.B. Dienste) vorhanden sind, damit Du die nur nutzt, wenn sie vorhanden sind? Ich kann mir vermutlich noch andere Varianten ausdenken, aber ich denke, das reicht, um zu verdeutlichen, was wir von Dir wollen. Bis dann robert
|
glaskugel
(Themenstarter)
Anmeldungsdatum: 8. Juli 2010
Beiträge: 3453
|
Das entbindet Dich leider nicht davon, uns mitzuteilen, was Du denn möchtest und was "allgemein" hier heißt - wenn Du Unterstützung haben möchtest.
Es tut mir wirklich leid, wenn ich zuwenig Informationen gegeben habe. Es ist aber auch nicht leicht aus einem sehr individuellen, über die Jahre gewachsenen Script mit 5800 Zeilen, das mitzuteilen, worauf es ankommt.
Wie jetzt? Ist es nun zielführend oder nicht?
dpkg-query ist natürlich zielführend.
Beschreibst Du mit "dann beendet es sich ..." ein Defizit meines Einzeilers oder ein gewünschtes Verhalten Deines Skriptes?
Es geht um mein Script, das sich beendet, wenn eine Bedingung zutrifft, die nicht überlegt wurde. Das sollte doch in meinem Code ersichtlich sein. Ich frage ab, ob es Trusty ist, wenn ja, dann suche ich nach xfce, wird nichts gefunden, suche ich nach xserver und wenn das gefunden wird, dann ist die Distri nicht bekannt und mein Script wird abgebrochen. Ich bin mir nicht sicher, ob ich deinen Einzeiler verstehe, aber IMHO kann das nicht zwischen Xubuntu und Kubuntu unterscheiden. Ok, das war anfangs nicht angegeben, aber ich ging davon aus, dass es einen Befehl gibt, der das eindeutig ausgibt und wie ich mir mittlerweile überlegt habe, gibt es da auch irgendwo was. Wenn ich Xubuntu starte, dann erscheint am Schirm "Xubuntu ...", das muss ja von irgendwo her kommen. Das wäre vielleicht auch ein Ansatz. grep cdrom /etc/apt/sources.list
# deb cdrom:[Xubuntu 14.04 LTS _Trusty Tahr_ - Release amd64 (20140416.2)]/ trusty main multiverse restricted universe
grep cdrom /etc/apt/sources.list
# deb cdrom:[Ubuntu-Server 14.04.1 LTS _Trusty Tahr_ - Release amd64 (20140722.3)]/ trusty main restricted
So lange das Ziel aber unklar ist, stochern wir hier im Nebel. Das ist wenig produktiv und macht auch nicht übermäßig viel Spaß.
Das tut mir leid, ich verstehe aber nicht was an dem Eingangsposting so unklar ist: "Ich möchte in einem Bash-Script abfragen um was für eine Installation es sich handelt" Das o.a.grep auf die sources.list zeigt das, das ich mir mit einem Befehl in der Art lsb_release erwartet hätte. Alles danach war dann lösungsorientiert. Geht es Dir um Server vs. Desktop? Geht es Dir darum, jede einzelne Installation zu identifizieren?
Mein augenblickliches Problem war Server und Xubuntu, also Desktop zu unterscheiden. Um auf Überraschungen vorbereitet zu sein, wollte ich möglichst allgemein abfragen, also jede einzelne Installation identifizieren.
Oder geht es Dir darum festzustellen, ob bestimmte Features (z.B. Dienste) vorhanden sind,
Ich hatte doch in meinen Code-Beispielen (hoffentlich) klar zum Ausdruck gebracht, es geht um cp und, dass eine Datei nicht überschrieben wird.
Ich kann mir vermutlich noch andere Varianten ausdenken
Vermutlich ist das das Problem. Spätestens seit meinem Posting vom 16. Oktober 2014 21:14 sollte klar sein, was ich will. Ich bedanke mich jedenfalls bei allen für ihre Beiträge. Letztlich habe ich nun ja ein Script, dass das tut was ich möchte.
|
g00d.morning
Anmeldungsdatum: 20. Februar 2013
Beiträge: 330
|
glaskugel schrieb: Ich hatte doch in meinen Code-Beispielen (hoffentlich) klar zum Ausdruck gebracht, es geht um cp und, dass eine Datei nicht überschrieben wird.
Ich kann mir vermutlich noch andere Varianten ausdenken
Vermutlich ist das das Problem. Spätestens seit meinem Posting vom 16. Oktober 2014 21:14 sollte klar sein, was ich will.
Eben nicht. Es gibt tausend Varianten das zu Unterscheiden. Um konkret etwas zu raten, muss man wissen worauf es genau ankommt. Man könnte Dir auch noch weitere tausend Varianten vorschlagen. Es ist ja nicht nur eine Person, die nicht weiß was Du willst, sondern alle, die hier etwas beigetragen haben. Dann solltest Du Dich doch mal fragen, ob hier alle schwer von Begriff sind. (Kann ja sein 😉) Auch ein 10.000 Zeilen langes Script muss ja irgendeine Grundfunktion haben. Dein cp-Befehl steht ja da um etwas zu machen, ist also Mittel und nicht Zweck. Ein cp-Befehl soll etwas nicht überschreiben? Bitte:
test -e
...ist natürlich nicht das Gesuchte. Darum hilft es ja in der Frage konkret zu sein...
Noch eine letzte Bemerkung: Offenbar willst Du ja doch nicht allgemein Unterscheiden, sondern sehr speziell. Dann würde ich es nach wie vor einfach am Hostname festmachen und fertig. Wenn das nicht geht - wie oben - von user unknown vorgeschlagen:
Ich meine ich würde in rc.local reinschreiben | distrivariant=Xfce
# oder
distrivariant=server
distrivariant=server32
distrivariant=server64
distrivariant=kdö
|
oder in /etc/profile - soweit ich verstanden habe ist das ja bei allen Installationen unterschiedlich.
Wenn Du zig if-Verzweigungen machst, ist das nicht einfach und allgemein! - sondern fehleranfällig. Gerade wenn das Script eh schon zu lang ist.
|