Страница 1 из 2

скрипт на bash

Добавлено: 05 май 2015, 22:59
Dmitrus
Привет. Подскажите нубику, как правильно организовать через скрипт задачку:
есть серв с OpenSuse, есть терминальные сессии, частая проблема с зависанием сессии при работе на тонких клиентах. Как бы правильно сделать так чтобы можно было сбрасывать сессию (1) с сессии (2). Вопроса безопасности нет, пользователи обычные пользователи, рутовых прав у них нет.
Пока мысля сделать путем - DIALOG. Може
т кто есчо что подскажет, направит на истинный путь?)
Спасибо

Re: скрипт на bash

Добавлено: 06 май 2015, 15:49
Olej
Dmitrus писал(а): есть серв с OpenSuse, есть терминальные сессии, частая проблема с зависанием сессии при работе на тонких клиентах.
Ничего (!) не понятно.
Что за терминальные сессии? ... мне как-то кажется, что это вообще даже терминология из Windows притянута :-?
Что за тонкие клиенты? Какие тонкие клиенты? Какие имена программ?
Почему зависание? ... если это какого-то рода удалённые подключения, то искать нужно причины и пути устранения, чтобы не зависало, а не писать скрипты. Значит где-то что-то в принципе неправильно настроено!

Re: скрипт на bash

Добавлено: 07 май 2015, 00:13
Dmitrus
там все норм, не вникайте )
подскажите плиз по коду, или направьте на истинный путь:
=====================
#!/bin/bash

dialog --title 'завершение сессии'\
--menu 'выберите необходимую сессию кнопками\
[вверх] [вниз] и нажмите [enter]\
' 15 50 3 user1 "user 1" user2 "user 2" exit "exit" 2>/tmp/menuitem.$$

menuitem='cat /tmp/menuitem.$$
case $menuitem in
user1) su user1 -c 'pkill -KILL -u user1';;
user2) su user2 -c 'pkill -KILL -u user2';;
exit) exit;;
esac

чет не запускается ((, не пойму в чем ошибка
==================================

#!/bin/bash
dialog --title 'перезапуск службы'
--yesno 'Вы действительно хотите перезапустить службу?' 10 40

case "$?" in
'0')
su Dmitrus /usr/.../app.sh restart
;;
'1')
exit
;;
'-1')
echo 'Вы вышли, нажав ESC, или же внутри dialogа произошла ошибка'
exit 1
;;
esac

все норм но запускается только с консоли, как сделать чтобы пользователь запустил с ярлыка на рабочем столе и диалог этот открылся в терминале и соответственно по окончанию закрывался? пользуюсь gnome-teerminal.
==========
Спасибо

Re: скрипт на bash

Добавлено: 07 май 2015, 00:15
Dmitrus
еще скажу, я в bash вообще нуль, всю инфу сгуглил, пытаюсь вникнуть. Не посылайте сразу :)

Re: скрипт на bash

Добавлено: 08 май 2015, 10:05
Olej
Dmitrus писал(а): все норм но запускается только с консоли, как сделать чтобы пользователь запустил с ярлыка на рабочем столе и диалог этот открылся в терминале и соответственно по окончанию закрывался? пользуюсь gnome-teerminal.
Если оно у вас работает в терминале, то создавайте в меню рабочего стола ярлык на рабочем столе... в Mint Cinnamon эта позиция меню называется "Создать ярлык для запуска здесь":
ln.png
ln.png (20.62 КБ) 7382 просмотра
- в поле Command впишите полное имя своего скрипта
- и обязательно поставьте галочку Lunch in Terminal - это и откроет вам терминал
- управлять видом терминала вы не можете - используется только терминал по умолчанию.

Как оно в выглядит в нынешнем GNOME показать не могу - полностью исключил GNOME из обращения ;-) ... Но там всегда было в точности подобное.
В чём проблема?

Re: скрипт на bash

Добавлено: 08 май 2015, 20:05
Dmitrus
Olej, Спасибо большое, реально не знал ) сейчас его запрятали в подменю.

Re: скрипт на bash

Добавлено: 08 май 2015, 20:38
Dmitrus
ребят чем пользоваться лучше для написания скриптов в win , чтобы можно спокойно копировать их в linux. Проблема с распознаванием русского текста в linux. Спасибо

Re: скрипт на bash

Добавлено: 08 май 2015, 21:09
Olej
Dmitrus писал(а):ребят чем пользоваться лучше для написания скриптов в win , чтобы можно спокойно копировать их в linux. Проблема с распознаванием русского текста в linux. Спасибо
Нет, проблема в уродливом понимании представления UNICODE в Windows! :-)
Во всех (почти) современных сборках Linux русский текст (как, впрочем и любой другой) представляется в UNICODE в одной единственной кодировке UTF-8.
В Windows используется кодировок для текста туча: CP866 - для совместимости с MS-DOS и с консольными программами, CP1251 - для оконных приложений, UTF-16 - там где нужно представлять UNICODE ... да ещё они "без спросу" меняют вопросы кодирования от версии к версии ... поэтому я не могу обстоятельно сказать, что у них там в Windows 7 & Windows 8.

В любом текстовом редакторе, который позволит вам установить кодировку UTF-8 вы можете набивать тексты, которые будут нормально восприниматься в Linux.

Ещё одной проблемой может быть то, что в Windows каждая строка текста заканчивается 2-мя символами разделителя (конца строки) - CR, LF ('\r', '\n'), а в UNIX - 1-м LF ('\n').
На выполнение скриптов это не должно иметь влияния ... но код смотрится ох уродливо! ;-)
Но в некоторых случаях это различие может сыграть роль: в литералах в скриптах etc.
Чтоб раз и навсегда избавиться в файле (скрипте) 2-х символьных разделителей, есть такая программа dos2unix:

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

olej@nvidia ~ $ dos2unix
Программа 'dos2unix' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt-get install dos2unix
У меня в этой системе она не установлена (нужды не было), но вы её можете установить как показано в подсказке.

Re: скрипт на bash

Добавлено: 08 май 2015, 21:17
Olej
Dmitrus писал(а):чем пользоваться лучше для написания скриптов в win
Т.е., если вам так сильно хочется готовить скрипты в Windows, то ваш алгоритм деятельности выглядит так:
- набираете текст скрипта в редакторе с кодировкой UTF-8 ...
- перегоняете этот файл в Linux ...
- в Linux пропускаете файл через команду (фильтр) dos2unix...
- добавляете командой chmod a+x ... флаг исполнимости скрипту...
- выполняете. ;-)

Re: скрипт на bash

Добавлено: 08 май 2015, 21:32
Dmitrus
Печаль в том что этих linux машин есть сотня ) и не одна, на каждом переводить проблема ) наверно виртуалку на linux поднимать буду.
Тут еще вопрос возник, пока гуглю ответ, но если есть уже ответ поделитесь плиз: создать ссылку (любую) на скрипт, с запуском как "Lunch in Terminal" ... ? через консоль, дабы размножить. Думаю может какой параметр ln ?