Jak mogę programowo ustalić, czy system jest komputerem stacjonarnym, czy serwerem?

12

Czy jest jakiś sposób na rozróżnienie między Ubuntu Server a Ubuntu Desktop?

Mam skrypt Bash ( bezwstydna wtyczka ), którego używam do konfigurowania lekkich serwerów sieciowych, i zauważyłem, że kiedy uruchamiam ten skrypt na własnym komputerze, moja instalacja Ubuntu (Desktop) jest w błędzie - jestem całkiem upewnij się, że przyczyną są następujące wiersze kodu:

echo -e "\e[1;32mDave, I'm removing the bloatware.\e[0m"

for halBox_package in apache2 bind9 nscd php portmap rsyslog samba sendmail; do
    if [[ -f /etc/init.d/$halBox_package ]]; then
        ( service $halBox_package stop ) > /dev/null
    fi

    ( apt-get -qq -y remove --purge "$halBox_package*" ) > /dev/null 2>&1
done

Chciałbym wykryć, czy skrypt jest uruchamiany w wersji serwerowej, czy nie, więc mogę zdecydować, czy wyczyścić te pakiety, czy nie. Jeśli nie można rozróżnić smaków, czy możesz mi powiedzieć, który pakiet jest niezbędny do prawidłowego działania Ubuntu Desktop?

Alix Axel
źródło
@Rinzwind: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Nic, czego nie mogę powiedzieć, czy to serwer, czy komputer stacjonarny.
Alix Axel
Zasadniczo nie ma różnicy między Ubuntu Server a Ubuntu. Różnica polega przede wszystkim na tym, że wersja Desktop ma GUI, ale możesz zainstalować GUI na serwerze ubuntu CLI. Ponadto można zainstalować pakiety serwerów w wersji GUI Ubuntu Desktop. Nie jestem pewien, czy istnieje pewny, czysty sposób na określenie nośnika instalacyjnego Desktop vs. Server.
Thomas Ward
@Rinzwind: To jest instalacja na serwerze. Mam również 3 inne VPS u 2 różnych dostawców z edycjami serwerów i żaden z nich nie pokazuje ciągu „serwer”. Chyba czytanie lsb_releasenie jest wystarczająco wiarygodne.
Alix Axel
@TheLordofTime: Tak, wiem, że są prawie takie same. Pomyślałem jednak, że może istniał przynajmniej kluczowy pakiet, który rozróżniałby te dwa elementy.
Alix Axel
W dalszej kolejności problemem było wyrażenie regularne pakietu, zmieniające je na ( apt-get -qq -y remove --purge "^$halBox_package*" )działające zarówno w wersjach serwerowych, jak i komputerowych.
Alix Axel

Odpowiedzi:

9

Komenda

dpkg -l ubuntu-desktop 

Wynik:

Wymagane = Nieznany / Zainstaluj / Usuń / Wyczyść / Zatrzymaj
| Status = Not / Inst / Conf-files / Unpacked / halF-conf / Half-inst / trig-aWait / Trig-pend
| / Err? = (Brak) / Wymagane przywrócenie (Status, Err: wielkie litery = złe)
|| / Nazwa Wersja Architektura Opis
+++ - ============== - ============ - ============ - ===== ============================
ii ubuntu-desktop 1.287 i386 System komputerowy Ubuntu

 - Element listy

Cave-at

Nie zadziała, jeśli ktoś zainstaluje pulpit bez użycia ubuntu-desktop. Ale kto to robi?

Dokumentacja

  • Przed 12.04 serwer Ubuntu domyślnie instaluje jądro zoptymalizowane pod kątem serwera. Od 12.04 nie ma różnicy w jądrze między Ubuntu Desktop a Ubuntu Server, ponieważ linux-image-server jest scalony w linux-image-generic.
Rinzwind
źródło
BTW, $?będzie, 1jeśli dpkg -lnic nie wymienia, w 0przeciwnym razie. Jeśli chodzi o grep desktopto, zawsze będzie pasować, albo pakiet, albo komunikat informujący, że nie został znaleziony.
Alix Axel
1
Ok, to moja ostatnia edycja Mam nadzieję! Czy potrafisz też wyczyścić komentarze? >: D
Rinzwind
Właśnie czytam dpkgstronę podręcznika , ale najwyraźniej to działa. Jeśli ktoś zainstaluje pulpit bez ubuntu-desktop, powinien być wystarczająco bystry, aby naprawić problemy, które spowoduje mój skrypt, więc wszystko jest w porządku! : P
Alix Axel
( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1działa świetnie, dzięki!
Alix Axel