Скрипты в Slackware
Модератор: Модераторы разделов
Скрипты в Slackware
С какой целью в /etc/profile.d используются и sh и csh скрипты, дублирующие друг друга по смыслу.
Re: Скрипты в Slackware
То есть, всем, кто выберет не sh-совместимую оболочку (csh, tcsh), предлагаете остаться совсем без возможностей /etc/profile.d/ ?
Одним из полей /etc/passwd является используемый пользователем shell, меняется прямо в файле либо при помощи chsh.
csh/tcsh при старте в качестве регистрирующей оболочки (login shell) выполняют /etc/csh.login, а там:
sh/ksh/ash/bash при старте в качестве регистрирующей оболочки выполняют /etc/profile, а там:
Одним из полей /etc/passwd является используемый пользователем shell, меняется прямо в файле либо при помощи chsh.
csh/tcsh при старте в качестве регистрирующей оболочки (login shell) выполняют /etc/csh.login, а там:
Код: Выделить всё
foreach file ( /etc/profile.d/*.csh )
[ -x $file ]
if ($status == 0) then
source $file
endif
end
sh/ksh/ash/bash при старте в качестве регистрирующей оболочки выполняют /etc/profile, а там:
Код: Выделить всё
# Append any additional sh scripts found in /etc/profile.d/:
for profile_script in /etc/profile.d/*.sh ; do
if [ -x $profile_script ]; then
. $profile_script
fi
done
Спасибо сказали:
Re: Скрипты в Slackware
Понятно, как то не подумал что кто-то может использовать командный интерпритатор отличный от bash.
Ещё вопрос об инициализационных скриптах. Их самому писать надо? Вот установил пакет gpm. В /etc/rc.d/rc.M есть строки:
Однако сам скрипт /etc/rc.d/rc.gpm отсутствует.
Ещё вопрос об инициализационных скриптах. Их самому писать надо? Вот установил пакет gpm. В /etc/rc.d/rc.M есть строки:
Код: Выделить всё
# Start the GPM mouse server:
if [ -x /etc/rc.d/rc.gpm ]; then
. /etc/rc.d/rc.gpm start
fi
Однако сам скрипт /etc/rc.d/rc.gpm отсутствует.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Скрипты в Slackware
да что вы говорите?
Код: Выделить всё
$ cat /etc/rc.d/rc.gpm-sample
#!/bin/sh
# Start/stop/restart the GPM mouse server:
if [ "$1" = "stop" ]; then
echo "Stopping gpm..."
/usr/sbin/gpm -k
elif [ "$1" = "restart" ]; then
echo "Restarting gpm..."
/usr/sbin/gpm -k
sleep 1
/usr/sbin/gpm -m /dev/mouse -t imps2
else # assume $1 = start:
echo "Starting gpm: /usr/sbin/gpm -m /dev/mouse -t imps2"
/usr/sbin/gpm -m /dev/mouse -t imps2
fi
# There is another way to run GPM, where it acts as a repeater outputting a
# virtual MouseSystems mouse on /dev/gpmdata. This is useful for feeding
# gpm's data to X, especially if you've got a busmouse (in that situation X
# and gpm may not coexist without using a repeater). To try running a GPM
# repeater for X, change the gpm command line to look like this:
# /usr/sbin/gpm -R msc -m /dev/mouse -t imps2
# Then, make sure that the mouse configuration in your XF86Config file refers
# to the repeater device (/dev/gpmdata) and a MouseSystems mouse type. If you
# edit the file directly, you'll want the lines to look like this (minus the
# comment marks '#' shown here, of course):
#Section "Pointer"
# Protocol "MouseSystems"
# Device "/dev/gpmdata"
Re: Скрипты в Slackware
Ну нету у меня rc.gpm-sample
И в составе пакета нету.
http://packages.slackware.com/?r=slackware..._64-2.txz&f
И в составе пакета нету.
http://packages.slackware.com/?r=slackware..._64-2.txz&f
Re: Скрипты в Slackware
А вот тут есть повод вспомнить устройство пакетов Slackware. В состав пакета могут входить установочный и настроечные сценарии. Установочный (install/doinst.sh) исполняется сразу после установки пакета. Настроечные сценарии (var/log/setup/setup.*) выполняет setup по завершении установки на этапе конфигурирования системы (CONFIGURE).
Если бы gpm устанавливался при установке системы, вопросы о настройке gpm были бы заданы установщиком setup (точнее, setup запустил бы настроечный сценарий пакета gpm).
Slackware предоставляет также штатный способ выполнения указанных выше настроечных сценариев и в уже установленной системе из нее самой при помощи утилиты pkgtool, пункт меню Setup.
Для полноты картины по сценарной составляющей пакетов Slackware нужно упомянуть однократные настроечные сценарии: var/log/setup/setup.*onlyonce*
Таким образом, чтобы настроить gpm при помощи штатных средств Slackware, запустите pkgtool от root-а, выберите Setup, выберите среди сценариев сценарий настройки gpm -- setup.mouse, ответьте на полученные вопросы про необходимость настройки мыши в консоли и ее особенности. В результате будет сформирован /etc/rc.d/rc.gpm.
Можно позвать сценарий настройки напрямую, звать его mouseconfig, по аналогии с другими Slackware-вскими *config.
Но также никто не запрещает выполнить настройку руками.
Если бы gpm устанавливался при установке системы, вопросы о настройке gpm были бы заданы установщиком setup (точнее, setup запустил бы настроечный сценарий пакета gpm).
Slackware предоставляет также штатный способ выполнения указанных выше настроечных сценариев и в уже установленной системе из нее самой при помощи утилиты pkgtool, пункт меню Setup.
Для полноты картины по сценарной составляющей пакетов Slackware нужно упомянуть однократные настроечные сценарии: var/log/setup/setup.*onlyonce*
Таким образом, чтобы настроить gpm при помощи штатных средств Slackware, запустите pkgtool от root-а, выберите Setup, выберите среди сценариев сценарий настройки gpm -- setup.mouse, ответьте на полученные вопросы про необходимость настройки мыши в консоли и ее особенности. В результате будет сформирован /etc/rc.d/rc.gpm.
Можно позвать сценарий настройки напрямую, звать его mouseconfig, по аналогии с другими Slackware-вскими *config.
Но также никто не запрещает выполнить настройку руками.
Спасибо сказали:
Re: Скрипты в Slackware
bormant, спасибо большое, очень объяснили. У меня такой же вопрос по пакету kbd был.
То есть если пакет ставится через pkgtool - то настроечный сценарий выполняется, а если через slackpkg - то не выполняется?
То есть если пакет ставится через pkgtool - то настроечный сценарий выполняется, а если через slackpkg - то не выполняется?
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Скрипты в Slackware
всё там выполняется. См. /var/log/scripts/kbd-1.* (тут пишется история о том, что выполнилось. Не нужно это запускать бездумно).
Re: Скрипты в Slackware
Нашёл причину. У меня сценарии не выполнялись, потому что не был установлен пакет dialog
Re: Скрипты в Slackware
Нет, установка пакетов при помощи pkgtool настроечные сценарии не вызывает.
pkgtool всего лишь позвляет выполнить настроечные сценарии установленных пакетов, которые лежат в /var/log/setup/.
Настроечные сценарии выполняет setup на шаге CONFIGURE. Одним из официальных способов переконфигурирования системы является загрузка установщика, вызов setup, выполнение шагов TARGET и CONFIGURE. Другими -- pkgtool --> Setup, непосредственный вызов сценариев-конфигураторов или правка файлов вручную.
drBatty
речь не про установочные (основные) сценарии пакета (install/doinst.sh, которые действительно попадают в /var/log/scripts/имя-пакета-версия-архитектура-сборка_и_метка) и исполняются при установке пакета безусловно.
Речь про настроечные сценарии пакета, которые находятся в var/log/setup/ и имеют имя setup.* не содержащее или содержащее onlyonce (в последнем случае сценарий иполняется только однократно). Весь этот набор исполняет setup на завершающем шаге CONFIGURE.
Спасибо сказали:
Re: Скрипты в Slackware
Большое спасибо.
У меня ещё вопросы, раз уж есть тема по скриптам?
Первый: какой пакет нужно установить/какой сценарий запустить, чтобы появился скрипт /etc/rc.d/rc.firewall?
Второй: есть одна небольшая неприятность, связанная с работой в WiFi. ESSID у меня прописан в /etc/rc.d.rc.iniet1.conf, парольная фраза в /etc/wpa_supplicant.conf. Всё работает. Но если всего лишь на секунду приостановится вещание ESSID - сеть пропадёт до тех пор пока я не перезапущу inet1. Можно ли как-нибудь сделать (скрипт переписать например), чтобы через равные промежутки времени велась бы проверка точки доступа на доступность и если она не доступна - сеть бы перезапускалась?
У меня ещё вопросы, раз уж есть тема по скриптам?
Первый: какой пакет нужно установить/какой сценарий запустить, чтобы появился скрипт /etc/rc.d/rc.firewall?
Второй: есть одна небольшая неприятность, связанная с работой в WiFi. ESSID у меня прописан в /etc/rc.d.rc.iniet1.conf, парольная фраза в /etc/wpa_supplicant.conf. Всё работает. Но если всего лишь на секунду приостановится вещание ESSID - сеть пропадёт до тех пор пока я не перезапущу inet1. Можно ли как-нибудь сделать (скрипт переписать например), чтобы через равные промежутки времени велась бы проверка точки доступа на доступность и если она не доступна - сеть бы перезапускалась?
Re: Скрипты в Slackware
По п.1:
rc.firewall целиком отдается на откуп админу.
Но есть такая штука, если лень писать целиком с нуля: Easy Firewall Generator, на офсайте или у Alien BOB-а -- http://www.slackware.com/~alien/efg/
По п.2:
можно накостылить что-то вродеи стартовать из rc.local через nohup асинхронно.
Поскольку установление беспроводного соединения процесс сам по себе небыстрый, возможно придется добавить флаг для исключения повторного запуска в течение таймаута. Насчет критерия пропадания беспроводной сети вместо ping-а тоже можно что-то подумать.
Или используя networkmanager, передергивать из интерфейса.
rc.firewall целиком отдается на откуп админу.
Но есть такая штука, если лень писать целиком с нуля: Easy Firewall Generator, на офсайте или у Alien BOB-а -- http://www.slackware.com/~alien/efg/
По п.2:
можно накостылить что-то вроде
Код: Выделить всё
#!/bin/bash
TST_HOST=ya.ru
while :; do
sleep 30s
if ! ping -c2 $TST_HOST 1>/dev/null 2>/dev/null; then
/etc/rc.d/rc.inet1 wlan0_restart
fi
done
Поскольку установление беспроводного соединения процесс сам по себе небыстрый, возможно придется добавить флаг для исключения повторного запуска в течение таймаута. Насчет критерия пропадания беспроводной сети вместо ping-а тоже можно что-то подумать.
Или используя networkmanager, передергивать из интерфейса.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Скрипты в Slackware
я бы предложил в crond, например файл /usr/local/sbin/restart.sh
Код: Выделить всё
#!/bin/sh
# адрес, который надо проверять
IP="192.168.1.1"
if /bin/ping -c1 $IP; then
# сеть работает
:
else
# сеть упала
/etc/rc.d/rc.inet1 stop
sleep 2
/etc/rc.d/rc.inet1 start
fi
потом от рута crontab -e
и вписать строку
Код: Выделить всё
* * * * * /usr/local/sbin/restart.sh >>/var/log/restart.log 2>&1
если всё работает хорошо, то /var/log/restart.log можно сменить на /dev/null, для экономии места. Хотя я не меняю(можно ввести в logrotate)