LINUX.ORG.RU

Не получается выполнить две комманды во внешнем терминале.

 ,


0

1

Здравствуйте!

Не получается выполнить две команды во внешнем терминале. Или я туплю, или что-то не так делаю, или что-то недопонял. Суть: ubuntu с xfce (всё последних версий в LTS). В апплете панели «Запуск приложений» хочу запилить запуск обновлений. Типа, жмём кнопотулю, выскакивает окошко терминала с запросом пароля и всё.

Что делаю: В этом самом апплете (такая же проблема и в терминале) создаю пустой элемент (он же значок запуска), ну, там название какое-то даю. Команда - sudo apt update && sudo apt full-upgrade. Ставлю галку выполнить в терминале.

Т.е. хочется, чтобы выскочил терминал, запросил один раз пароль и обновил систему.

Короче, оно не работает. Подозреваю, что спотыкается на &&. Экранировать \ пробовал, в кавычки брал, через xfce4-terminal –command=sudo apt update && sudo apt full-upgrade пробовал (тоже со всякими вариантами кавычек и \ ). Максимум что получалось - выполняется первая команда. ЧЯДНТ?



Последнее исправление: cetjs2 (всего исправлений: 1)

Т.е. хочется, чтобы выскочил терминал, запросил один раз пароль и обновил систему.

Так это надо заюзать GUI приблуду какую типа gksudo

ololoid ★★★★
()

Так или не так, но все усложняешь. А разве в Убунту нет автообновлялки. Я наоборот, всегда удаляю все эти обновлялки-оповещалки.

создаю пустой элемент (он же значок запуска)…

…он же - файл *.desktop. Но надо понимать, что это все-таки не полноценный шелл, поэтому там работают только самые простые команды. Создай скрипт, в него помещай «sudo apt update && sudo apt full-upgrade». А запуск скрипта уже помещай в десктоп-файл. Кстати можно обойтись и без ручного ввода пароля, в этом случае и терминал не нужен будет.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 2)
Ответ на: комментарий от ololoid

Зачем, если и так окно с терминалом открывается и пароль запрашивается? Проблема в том, что вторая команда (после &&) не передаётся.

beduin747
() автор топика
Ответ на: комментарий от No

В поле «Команда» запиши

sudo sh -c ‘apt update && apt full-upgrade’

Спасибо! Так заработало. Осталось разобраться, как всё-таки передать терминалу эти две команды ( ну это уже для общего развития)? Ведь если вызвать терминал, а потом набрать руками - всё работает.

beduin747
() автор топика
Ответ на: комментарий от beduin747

В случае судо откроется просто окно терминала, с запросом пароля. Самый беспроблемный вариант: все команды помещаешь в скрипт. В десктоп-файл вписываешь запуск скрипта.

andytux ★★★★★
()
Ответ на: комментарий от andytux

Так или не так, но все усложняешь. А разве в Убунту нет автообновлялки. Я наоборот, всегда удаляю все эти обновлялки-оповещалки.

Не усложняю. Убунта самосборная. Установлено только самое необходимое. Поставил человеку, который с линухами вообще дело не имел. Но хочется, чтобы обновления устанавливались. Консоль потом освоит. На самое нужное пока будут сделаны кнопотули имеющимися средствами, чтобы человек мог пользоваться сразу, а не красноглазить.

Но надо понимать, что это все-таки не полноценный шелл, поэтому там работают только самые простые команды.

Это тут ни при чём. Открываем xfce4-terminal. Полноценный шелл? Вполне.

Набираем sudo apt update && sudo apt full-upgrade - работает.

Набираем xfce4-terminal –command=‘sudo apt update’ - работает. Открывается новый терминал, запрашивается пароль, всё отрабатывает штатно и терминал закрывается. Всё как надо.

Набираем xfce4-terminal –command=‘sudo apt update && sudo apt full-upgrade’ - не работает.

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

beduin747
() автор топика
Ответ на: комментарий от andytux

Лишний пакет, к тому же его в репозитории нет. И гуй в данном случае не нужен. В окне терминала явно запрашивается пароль, и проблема не в sudo.

Выше решение подсказали, и оно работает.

beduin747
() автор топика
Ответ на: комментарий от beduin747

И тоже против лишнего. Тем более, в случае судо несложно сделать вообще без ввода пароля, хотя и не рекомендуется из-за снижения безопасности.

andytux ★★★★★
()
Ответ на: комментарий от beduin747

Набираем xfce4-terminal –command=‘sudo apt update && sudo apt full-upgrade’ - не работает.
Вернее новый терминал открывается, пароль запрашивает, но команда прилетает кривая и не отработав как надо, терминал закрывается.

Хотелось бы увидеть, какая все-таки команда прилетает, и какой у нее вывод.

И какой вывод у sudo apt update. Два амперсанда означают последовательное выполнение команды после завершения первой с кодом 0. Apt update в случае успеха отдает именно 0:

~$ sudo apt update; echo $?
Hit:1 http://mirror.mephi.ru/debian buster InRelease
Hit:2 http://mirror.mephi.ru/debian buster-updates InRelease
Hit:3 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:4 http://security.debian.org/debian-security buster/updates InRelease
Hit:5 http://deb.debian.org/debian buster-backports InRelease
Hit:6 http://repository.spotify.com stable InRelease
Hit:7 https://download.docker.com/linux/debian buster InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
28 packages can be upgraded. Run 'apt list --upgradable' to see them.
0

Если намеренно его поломать:

~$ sudo apt update; echo $?
Hit:1 http://mirror.mephi.ru/debian buster InRelease
Hit:2 http://deb.debian.org/debian buster-backports InRelease
Hit:3 http://mirror.mephi.ru/debian buster-updates InRelease
Hit:4 http://security.debian.org/debian-security buster/updates InRelease
Hit:5 http://repository.spotify.com stable InRelease
Hit:6 https://download.docker.com/linux/debian buster InRelease
Reading package lists... Done
E: The method driver /usr/lib/apt/methods/hxttp could not be found.
N: Is the package apt-transport-hxttp installed?
E: Failed to fetch hxttp://dl.google.com/linux/chrome/deb/dists/stable/InRelease  
E: Some index files failed to download. They have been ignored, or old ones used instead.
100

~$ false; echo $?  
1
~$ true; echo $?  
0
~$ false; echo false
false
~$ false && echo false 

~$ 

Я это к чему. Апт апдейт без ошибок завершается?

swami
()
Ответ на: комментарий от swami

Я это к чему. Апт апдейт без ошибок завершается?

Да, без ошибок. Я же выше писал:

Набираем sudo apt update && sudo apt full-upgrade - работает.

beduin747
() автор топика
Ответ на: комментарий от ololoid

Если простой скрипт то можно применить в скрипте:

whiptail
У него есть окно ввода пароля в псевдографике.

Bootmen ☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.