Як я можу програмно визначити, чи є система настільним ПК або сервером?


12

Чи є спосіб відрізнити Ubuntu Server від Ubuntu Desktop?

У мене є сценарій Bash ( безсоромний штекер ), який я використовую для налаштування легких веб-серверів, і я помітив, що коли я запускаю цей сценарій на власному комп’ютері, моя установка Ubuntu (Desktop) все заплуталася - я досить впевнений, що винуватцем є такі рядки коду:

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

Що я хотів би зробити, це виявити, чи виконується сценарій в ароматі сервера чи ні, тож я можу вирішити, чи потрібно чистити ці пакунки чи ні. Якщо неможливо розрізнити ароматизатори, ви можете сказати мені, який пакунок необхідний, щоб Ubuntu Desktop працював належним чином?


@Rinzwind : DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.10 DISTRIB_CODENAME=quantal DISTRIB_DESCRIPTION="Ubuntu 12.10". Нічого, що я можу використати, щоб сказати, чи це Сервер, чи Настільний.
Алікс Аксель

Принципово кажучи, між Ubuntu Server і Ubuntu різницею мало. Різниця полягає насамперед у тому, що версія Desktop постачається з графічним інтерфейсом, але ви можете встановити графічний інтерфейс на сервер CLI ubuntu. Також ви можете встановити серверні пакети на GUI-версію Ubuntu Desktop. Я не впевнений, що існує надійний, чіткий спосіб визначити носій встановлення Desktop vs. Server.
Thomas Ward

@Rinzwind: Це встановлення сервера. У мене також є 3 інших VPS в двох різних постачальниках з серверними виданнями, і жоден з них не показує рядок "сервер". Я думаю, що читання lsb_releaseпросто недостатньо надійне.
Алікс Аксель

@TheLordofTime: Так, я знаю, що вони майже однакові. Але я подумав, що, можливо, існує принаймні вирішальний пакет, який би відрізняв між ними.
Алікс Аксель

В якості подальшої записки, проблемою було регулярне вираження пакета, змінивши його для ( apt-get -qq -y remove --purge "^$halBox_package*" )роботи як на сервери, так і на робочому столі.
Алікс Аксель

Відповіді:


9

Командування

dpkg -l ubuntu-desktop 

Результат:

Бажаний = Невідомо / Встановити / Видалити / Очистити / Затримати
| Status = Не / Inst / Conf-файли / Unpacked / halF-conf / Half-inst / trig-aWait / Trig-pend
| / Err? = (Немає) / Потрібно перевстановити (Статус, Помилка: верхній регістр = погано)
|| / Ім'я Версія Опис архітектури
+++ - ============== - ============ - ============ - ===== =============================
ii ubuntu-desktop 1.287 i386 Настільна система Ubuntu

 - елемент списку

Печера

Це не спрацює, якщо хтось встановить робочий стіл без використання ubuntu-desktop. Але хто це робить?

Документація

  • До 12.04 сервер Ubuntu за замовчуванням встановлює оптимізоване для сервера ядро. Починаючи з 12.04, між ядрами Ubuntu Desktop та Ubuntu Server немає різниці в ядрі, оскільки сервер linux-image об'єднаний у linux-image-generic.

BTW, $?буде, 1якщо dpkg -lне вдасться перерахувати що-небудь, 0інакше. З приводу того, що grep desktopвін завжди буде відповідати, або пакет, або повідомлення, в якому сказано, що його не знайдено.
Алікс Аксель

1
Добре, це моя остання редакція, сподіваюся! Чи можете ви також очистити коментарі? >: D
Rinzwind

Я просто читаю сторінку dpkgman, але, мабуть, це, здається, працює. Якщо хтось встановлює робочий стіл без ubuntu-desktop, він повинен бути вразливим, щоб вирішити проблеми, які мій сценарій спричинить, тому все добре! : P
Алікс Аксель

( dpkg -s "ubuntu-desktop" && Ubuntu_Flavor="desktop" ) > /dev/null 2>&1чудово працює, дякую!
Алікс Аксель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.