Как сделать logout из скрипта bash?
Модераторы: /dev/random, Модераторы разделов
-
savigm
- Сообщения: 127
- ОС: openSUSE
Как сделать logout из скрипта bash?
Собственно проблема в том, что из скрипта нельзя разлогиниться(logout), а exit - это выход из скрипта, а мне надо именно разлогигиться в системе. Есть у кого идеи как это сделать?
-
/dev/random
- Администратор
- Сообщения: 5448
- ОС: Gentoo
Re: Как сделать logout из скрипта bash?
убить родительский баш.
-
savigm
- Сообщения: 127
- ОС: openSUSE
Re: Как сделать logout из скрипта bash?
Да, я только-что тоже докопался до такого решения:
Только вот немогу пока разобраться с аргументами pgrep, как именно находится процесс шелла?
Код: Выделить всё
kill -HUP `pgrep -s 0 -o`Только вот немогу пока разобраться с аргументами pgrep, как именно находится процесс шелла?
-
flank'er
- Сообщения: 496
- Статус: слаковщик
- ОС: Slackware64
Re: Как сделать logout из скрипта bash?
как-то так
Код: Выделить всё
kill -9 `ps ux |grep tty6 |grep bash |awk '{print $2}'`-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Как сделать logout из скрипта bash?
flank'er писал(а): ↑20.01.2010 06:48как-то так
Код: Выделить всё
kill -9 `ps ux |grep tty6 |grep bash |awk '{print $2}'`
вы уверены что самый верхний баш ? и что не "консоль в консоли", к примеру запущен mc далее . ./script
(о виртуальной консоли не говорю уж)
Я конечно далек от мысли...(с)
-
Goodvin
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: Как сделать logout из скрипта bash?
Попробую угадать: Вам нужно при логине определенным пользователем запустить некий скрипт, который бы потом сам сумел закрыть сессию. Чтобы не дать постороннему человеку, оказавшемуся рядом с консолью, доступ к открытой сессии.
Так?
Если так, то можно сделать значительно проще.
1. Создайте специального пользователя в системе, от которого будет работать нужный Вам скрипт.
2. Назначьте этому пользователю Ваш скрипт вместо оболочки логин-шелла, т.е. если дефолтный шелл bash - то вместо bash.
3. При логине этим пользователем вместо bash будет запускаться Ваш скрипт, делать своё дело, завершать работу и завершать сессию.
4. PROFIT
Если я не угадал - опишите Вашу задачу, скорее всего, её можно решить другим способом, нежели из скрипта убивать сессию.
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Как сделать logout из скрипта bash?
Goodvin скорее всего прав...
для убийства (не логаута) в общем случае
для убийства (не логаута) в общем случае
Код: Выделить всё
#!/bin/sh
function ppid() {
ppid=`ps -p $1 -o ppid=`
tty=`ps -p $$ -o tty=`
ps -p $ppid -o tty= | grep -q "?" && (echo $1;exit) || ppid $ppid
}
echo Exit
sleep 1
kill -9 `ppid $$`Я конечно далек от мысли...(с)
-
/dev/random
- Администратор
- Сообщения: 5448
- ОС: Gentoo
Re: Как сделать logout из скрипта bash?
Проще так:
pkill -o -t "$(basename "$(tty)")" -u "$(whoami)"
pkill -o -t "$(basename "$(tty)")" -u "$(whoami)"
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Как сделать logout из скрипта bash?
что будет в tty если скрипт запущен из mc в подключении по ssh и через su/sudo ?
Я конечно далек от мысли...(с)
-
/dev/random
- Администратор
- Сообщения: 5448
- ОС: Gentoo
Re: Как сделать logout из скрипта bash?
Он завершит работу с текущей виртуальной консолью. Не думаю, что человеку захочется, чтобы при запуске из xterm этот скрипт убивал иксы - в такой ситуации, ИМХО, наиболее логично именно закрытие xterm'а.
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Как сделать logout из скрипта bash?
не закроет он иксы, а только терм (конечно выше только "болванка" без полной проверки)
при схеме
$ ssh пупкин@x.x.x.x
пупкин@~$ sudo
root@~$ mc
^O
root@~$ tty
tty выдаст, что то типа /dev/pts/2
в то время, как "консоль" /dev/pts/1
при схеме
$ ssh пупкин@x.x.x.x
пупкин@~$ sudo
root@~$ mc
^O
root@~$ tty
tty выдаст, что то типа /dev/pts/2
в то время, как "консоль" /dev/pts/1
Я конечно далек от мысли...(с)
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux