Как сделать logout из скрипта bash?

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Как сделать logout из скрипта bash?

Сообщение savigm »

Собственно проблема в том, что из скрипта нельзя разлогиниться(logout), а exit - это выход из скрипта, а мне надо именно разлогигиться в системе. Есть у кого идеи как это сделать?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5448
ОС: Gentoo

Re: Как сделать logout из скрипта bash?

Сообщение /dev/random »

убить родительский баш.
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Как сделать logout из скрипта bash?

Сообщение savigm »

Да, я только-что тоже докопался до такого решения:

Код: Выделить всё

kill -HUP `pgrep -s 0 -o`

Только вот немогу пока разобраться с аргументами pgrep, как именно находится процесс шелла?
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Как сделать logout из скрипта bash?

Сообщение flank'er »

как-то так

Код: Выделить всё

kill -9 `ps ux |grep tty6 |grep bash |awk '{print $2}'`
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как сделать logout из скрипта bash?

Сообщение smaharbA »

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?

Сообщение Goodvin »

savigm писал(а):
20.01.2010 01:50
Собственно проблема в том, что из скрипта нельзя разлогиниться(logout), а exit - это выход из скрипта, а мне надо именно разлогигиться в системе. Есть у кого идеи как это сделать?

Попробую угадать: Вам нужно при логине определенным пользователем запустить некий скрипт, который бы потом сам сумел закрыть сессию. Чтобы не дать постороннему человеку, оказавшемуся рядом с консолью, доступ к открытой сессии.
Так?

Если так, то можно сделать значительно проще.
1. Создайте специального пользователя в системе, от которого будет работать нужный Вам скрипт.
2. Назначьте этому пользователю Ваш скрипт вместо оболочки логин-шелла, т.е. если дефолтный шелл bash - то вместо bash.
3. При логине этим пользователем вместо bash будет запускаться Ваш скрипт, делать своё дело, завершать работу и завершать сессию.
4. PROFIT

Если я не угадал - опишите Вашу задачу, скорее всего, её можно решить другим способом, нежели из скрипта убивать сессию.
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как сделать logout из скрипта bash?

Сообщение smaharbA »

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?

Сообщение /dev/random »

Проще так:

pkill -o -t "$(basename "$(tty)")" -u "$(whoami)"
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как сделать logout из скрипта bash?

Сообщение smaharbA »

/dev/random писал(а):
20.01.2010 12:19
Проще так:

pkill -o -t "$(basename "$(tty)")" -u "$(whoami)"


что будет в tty если скрипт запущен из mc в подключении по ssh и через su/sudo ?
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5448
ОС: Gentoo

Re: Как сделать logout из скрипта bash?

Сообщение /dev/random »

smaharbA писал(а):
20.01.2010 14:17
что будет в tty если скрипт запущен из mc в подключении по ssh и через su/sudo ?

Он завершит работу с текущей виртуальной консолью. Не думаю, что человеку захочется, чтобы при запуске из xterm этот скрипт убивал иксы - в такой ситуации, ИМХО, наиболее логично именно закрытие xterm'а.
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как сделать logout из скрипта bash?

Сообщение smaharbA »

не закроет он иксы, а только терм (конечно выше только "болванка" без полной проверки)

при схеме
$ 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

Re: Как сделать logout из скрипта bash?

Сообщение Rootlexx »

savigm писал(а):
20.01.2010 01:50
Собственно проблема в том, что из скрипта нельзя разлогиниться(logout), а exit - это выход из скрипта, а мне надо именно разлогигиться в системе. Есть у кого идеи как это сделать?

Запускать скрипт в текущей оболочке:

Код: Выделить всё

source файл_скрипта
Спасибо сказали: