Как сделать так, чтобы локально установленное программное обеспечение автоматически загружалось при входе в мою учетную запись?

Определения хостов всегда являются глобальными.

Итак, у меня на роутере 3 сети; «LAN» 10.0.0.0/24, «гость» 10.100.100.0/24 и «IoT» 10.100.200.0/24

Мой dhcpd.confимеет следующую конфигурацию

subnet 10.0.0.0 netmask 255.255.255.0 {
  authoritative;
  option routers      10.0.0.1;
  blah;
}

subnet 10.100.100.0 netmask 255.255.255.0 {
  authoritative;
  option routers      10.100.100.1;
  blah;
}

subnet 10.100.200.0 netmask 255.255.255.0 {
  authoritative;
  option routers      10.100.200.1;
  blah;
}

host machine1 {
  hardware ethernet xx:xx:xx:xx:xx:xx;
  fixed-address 10.0.0.13;
  option host-name "machine1";
}

host machine2 {
  hardware ethernet yy:yy:yy:yy:yy:yy;
  fixed-address 10.100.200.15;
  option host-name "machine2";
}

DHCPd правильно определяет, что machine1находится в локальной сети, а machine2— в подсети IoT, и отправляет правильную конфигурацию (маску сети, маршрут по умолчанию, DNS-сервер и т. д. и т. д. ), относящиеся к этой подсети.

Если у вас есть машина, которая может подключаться к нескольким интерфейсам, и вы хотите, чтобы они получали разные адреса, вы можете перечислить хост несколько раз. Например, мой мобильный телефон:

host s8 {
  hardware ethernet aa:aa:aa:aa:aa:aa;
  fixed-address 10.0.0.34;
  option host-name "s8";
}

host s8-guest {
  hardware ethernet aa:aa:aa:aa:aa:aa;
  fixed-address 10.100.100.9;
  option host-name "s8-guest";
}

Теперь он будет получать разные адреса в зависимости от того, в какой сети он находится.

Если для этой сети нет статической записи, она получит динамический адрес. Если в подсети нет свободных адресов, то ей не будет присвоен ни один адрес.

0
31.10.2021, 15:57
3 ответа

Вы просто захотите поместить его в ~/.bash_profile, так как это то, что ваша оболочка выполняет при входе в систему; проблема :, если вы не входите в оболочку (, например. поскольку вы входите в систему с помощью графического интерфейса ), это не будет запущено.

примечание :это один из трех отдельных ответов; предполагается раздельность.

1
31.10.2021, 16:48

Если вы знаете, что ваш скрипт устанавливает только те вещи, которые одновременно

  1. переменные среды, а не новые функции оболочки,
  2. никогда не меняйте (например. не зависеть от времени, даты или номера версии того, что вы можете обновить ),

тогда вы можете просто "эмулировать" то, что делает скрипт :он установит несколько переменных окружения.

Итак, как сравнить, какие переменные среды были до и после запуска скрипта? diffдействительно хорошо сравнивает текстовые файлы.

Вы можете использовать setдля получения переменных окружения (после установки опции posix.

И вы можете использовать <(...), чтобы создать временный файл для хранения результатов set, запущенных в подоболочке. Итак, соберите все вместе:

$ diff <(set -o posix; set) <(export FOO=BAR; set -o posix; set)

скажу тебе

33a34
> FOO=BAR

, который вы бы прочитали как «есть строка FOO=BAR, которая есть во втором выводе, а не в первом».

Вы можете бежать

$ diff <(set -o posix; set) <(. /path/to/setup_software.sh; set -o posix; set)

, чтобы выяснить, что ваш сценарий установки изменил в среде. Вам понадобится человеческий мозг, чтобы интерпретировать это — некоторые вещи будут просто неуместны, некоторые будут иметь влияние на то, что сценарий на самом деле делает с вашей системой.

Затем вы можете добавить все измененные переменные в свой ~/.bashrc, например.

export FOO=BAR

примечание :это один из трех отдельных ответов; предполагается раздельность.

1
31.10.2021, 16:53

Звучит опасно, как будто ты слишком много стараешься!Вы можете просто добавить псевдоним, который является источником сценария, а затем запускает ваше программное обеспечение :

.
alias startit=". /path/to/setup_software.sh; run_software"

и затем позвоните startit.

Если это больше, чем одна команда, возможно, вы ищете что-то вроде автоматической -активации сред, когда вы cdзаходите в определенные папки.

direnvпозволяет вам сделать это. Конечно, это не решает проблему, связанную с тем, что поиск скрипта требует времени -, но он делает это только один раз, когда вы входите в конкретный каталог, а не после для той же оболочки.

примечание :это один из трех отдельных ответов; предполагается раздельность.

0
31.10.2021, 17:00

Теги

Похожие вопросы