Здесь я как бы сталкиваюсь с дилеммой , у меня есть репозиторий GitHub приличного размера, и я хочу создать setup.sh или bootstrap.sh который после запуска с root загрузит некоторые необходимые модули Python и репозитории apt на запущенных компьютерах.

Репозиторий нацелен на Raspberry Pis, работающий на Raspbian Jessie 8.0. Pis должен быть настроен как AdHoc Network Nodes. Однако скрипт, который я хочу написать, можно использовать и на любом ноутбуке на основе дистрибутива Debian.

Я хочу, чтобы этот setup.sh/bootstrap.sh также создавал резервную копию файла /etc/network/interfaces и перезаписывал исходный файл, настраивая интерфейсы следующим образом:

## Desired Interfaces file
auto lo
iface lo inet loopback

## Ethernet LAN
iface eth0 inet dhcp

## WLAN AdHoc
auto wlan0
allow hot-plug wlan0
iface wlan0 inet6 auto ## IPv6

Я хочу записать полные вышеупомянутые данные в setup.sh но я думаю, что это не стандартная практика!

Должен ли я создать файл interfaces.txt и он должен содержать вышеупомянутые детали, а затем использовать > или >> в моем setup.sh?

пример

что-то вроде

# in the setup.sh file
cat interfaces.txt > /etc/network/interfaces

cat adhoc.txt > /etc/rc.local

где adhoc.txt содержит

adhocNet(){
    ifconfig wlan0 down
    iwconfig wlan0 mode ad-hoc essid my-ESSID channel 1 txpower 3dBm
    ifconfig wlan0 up
}
adhocNet()
exit 0

Я хочу создать этот bash-скрипт, который может сделать вещи для конечного пользователя намного проще! (Просто мысль здесь!)

Вопрос

Означает ли это, что мне нужно создать файл .txt для всех установок, которые я хочу настроить на моем компьютере с GNU/Linux, или есть ли что-то среднее?

Как большие репозитории создают такие bash-скрипты, чтобы конечному пользователю было легко его использовать изначально.

1 ответ1

1

Если вы хотите сохранить все в одном файле, у вас должны быть файлы, которые вы хотите изменить в вашем скрипте. Чтобы сделать ваш сценарий более читабельным, вы можете использовать что-то вроде этого: https://stackoverflow.com/a/7875598/760942

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .