1

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

2

cdrw⇓ пишет:

автоматически запускался какой либо скрипт?

не понял вопроса, какой скрипт автоматически запускался? любой скрипт настраивается через сron по нужному расписанию.

добрый человек:)
Linux admin PC 3.8.0-23-generic #34-Ubuntu SMP Wed May 29 20:22:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
system admin of unix. i like my job. also i like to catch fish and many other things and english too.
Хочу на пляж)

3

cdrw⇓ пишет:

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

добавь его в bashrc...

95% процентов проблем находятся между клавиатурой и стулом.

4 (07.07.2013 01:47:11 отредактировано yars)

Fat-Zer пишет:

добавь его в ~/.bashrc...

Или в ~/.bash_profile ab

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

5

Не то.
Попробую пояснить зачем.
Скрипт должен запуститься один раз и сам себя уничтожить.
Скрипт такой:

#!/bin/bash

/usr/bin/xdg-user-dirs-update

То есть, он должен создать каталоги и исчезнуть.

6

Добавить в ~/.bashrc

if [ -f ~/scriptname.sh ]; then
    ~/scriptname.sh
    rm ~/scriptname.sh
fi
Йа тьомный эльф

7

Лучше даже так:

SCRIPT="/path/to/script.sh"
if [ -f $SCRIPT ]; then
    $SCRIPT
    rm $SCRIPT
fi
Йа тьомный эльф

8

Спасибо большое!
То что надо.

9

bobr пишет:

Лучше даже так:

SCRIPT="/path/to/script.sh"
if [ -f $SCRIPT ]; then
    $SCRIPT
    rm $SCRIPT
fi

Это не есть правильно. То есть не соответствует поставленной задаче. А именно - это при наличии некоего скрипта запустит его, а затем - уничтожит. Поставленная задача несколько иначе звучит - запуститься, что-то сделать и затем самоуничтожиться.

Я бы просто в последней строке такого скрипта дописал:

rm -f $0

10

Cruiser78⇓ пишет:

Я бы просто в последней строке такого скрипта дописал:

А потом каждый раз при запуске bash и выполнении ~/.bashrc получать сообщене о том, что такой-то файл не найден...
Строка-то с запуском скрипта в ~/.bashrc останется независимо от того, удалить этот скрипт или не удалить. Тогда уж в конец этого скрипта нужно добавить еще и sed, который будет редактировать ~/.bashrc на предмет удаления строки с вызовом этого скрипта.

Йа тьомный эльф

11

Вместо
if [ -f $SCRIPT ]; then

лучше
if [ -x $SCRIPT ]; then

либо внутри if вызывать как "source $SCRIPT" ...

12

Может я не правильно пояснил, но bobr, правильно меня понял и соответственно дал наиболее правильную подсказку.

Файл ~/.bashrc, вместе со скриптом scriptname.sh я разместил в каталоге /etc/skel. При создании пользователя, они автоматом разместились в его домашнем каталоге. При первом входе пользователя команда /usr/bin/xdg-user-dirs-update создала каталоги и "исчезла". Я этого и хотел добиться. На счет техники исполнения, тут из меня программатор еще никудышний, я согласен на любой работающий вариант. Хотя почитать, как делают умные люди всегда интересно...
Это мне нужно было для первого запуска LXDE, в отличии от XFCE там эти каталоги автоматом не создаются. А как это устроено при первом пуске XFCE, разобраться не смог.