скрипт на bash

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

скрипт на bash

Непрочитанное сообщение Dmitrus » 05 май 2015, 22:59

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Olej » 06 май 2015, 15:49

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

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Dmitrus » 07 май 2015, 00:13

там все норм, не вникайте )
подскажите плиз по коду, или направьте на истинный путь:
=====================
#!/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.
==========
Спасибо
Последний раз редактировалось Dmitrus 07 май 2015, 00:34, всего редактировалось 1 раз.

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Dmitrus » 07 май 2015, 00:15

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Olej » 08 май 2015, 10:05

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

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

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Dmitrus » 08 май 2015, 20:05

Olej, Спасибо большое, реально не знал ) сейчас его запрятали в подменю.

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Dmitrus » 08 май 2015, 20:38

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Olej » 08 май 2015, 21:09

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
У меня в этой системе она не установлена (нужды не было), но вы её можете установить как показано в подсказке.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Olej » 08 май 2015, 21:17

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

Dmitrus
Интересующийся
Сообщения: 9
Зарегистрирован: 05 май 2015, 22:49
Контактная информация:

Re: скрипт на bash

Непрочитанное сообщение Dmitrus » 08 май 2015, 21:32

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

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей