Shell Script - как я могу использовать Gksudo для выполнения последовательных операций Sudo только с одним запросом пароля? -- shell поле с участием sudo поле с участием gksudo пол Связанный проблема

shell script- How can I use gksudo to perform consecutive sudo operations with only one password prompt?


3
vote

проблема

русский

Я хочу использовать Sudo для монтирования двух отдельных сетевых дисков на специальной основе, поскольку мое устройство NAS не всегда на линии, поэтому я не убежден, что добавляю что-либо до / etc / fstab.

Следующий код способен добиться этого, однако я не собираюсь запустить скрипт от терминала, при этом приглашение пароля Sudo - моя проблема:

 <код> #!/bin/sh  sudo mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8 sudo mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8   

Мне нужно выбрать «запустить в терминале», чтобы успешно запустить этот скрипт из окна браузера файлов. Таким образом, я бы предпочел использовать GKSUDO, который откроет подсказку для меня, чтобы войти в пароль Sudo.

Однако, если я вместо этого использую следующий код, который я должен ввести пароль Sudo дважды!

 <код> gksudo "mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8" gksudo "mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8"   

На данный момент я пытался быть умным и использовать опцию Gksudo, чтобы «запустить как Sudo» следующим образом, Однако только первый привод установлен, как первый скрипт выше, будет работать молча, если не запускается из терминала:

 <код> gksudo -S "mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8" sudo "mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8"   

Что бы мне действительно хотелось бы сделать, это следующее, но я не уверен, что можно:

 <код> gksudo this{ command1 command2 command3 }   

Это только я или gksudo есть короткая память?

Английский оригинал

I want to use sudo to mount two separate network drives on an ad-hoc basis as my NAS device is not always on line, so I am not convinced that adding anything to /etc/fstab is necessary.

The following code is able to achieve this, however I do not intend to run the script from a terminal, thus the sudo password prompt is my issue:

#!/bin/sh  sudo mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8 sudo mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8 

I need to select "run in terminal" to be able to successfully run that script from a file browser window. Thus I would prefer to use gksudo, which will open a prompt window for me to enter the sudo password.

However, if I instead use the following code I have to type the sudo password twice!

gksudo "mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8" gksudo "mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8" 

At this point I tried to be smart and use the gksudo option to "run as sudo" as follows, however only the first drive is mounted like the first script above would fail silently if not run from a terminal:

gksudo -S "mount -t cifs //10.1.1.9/Volume_1 /media/DNS323-A -ousername=user,password=pass,iocharset=utf8" sudo "mount -t cifs //10.1.1.9/Volume_2 /media/DNS323-B -ousername=user,password=pass,iocharset=utf8" 

What I'd really like to be able to do is the following, but I'm not sure if it's possible:

gksudo this{ command1 command2 command3 } 

Is it just me or does gksudo have a short memory?

</div
        

Список ответов

5
 
vote
vote
Лучший ответ
 

Это скрипт, поэтому лучший способ было бы не иметь <код> sudo / <код> gksudo команды в скрипте, но вызовите скрипт, используя <код> sudo / код>.

Я не думаю, что gksudo имеет какую-либо саму память, это все <код> sudo S, который используется на заднем плане.

Другой переменник будет использовать:

 <код> gksudo "sh -c 'command1; command2; ...'"   

Но это не очень элегантно.

 

this is a script, so the best way would be not to have the sudo/gksudo commands in the script, but call the script using sudo.

I don't think gksudo has any memory itself, that's all sudos doing which is being used in the background.

another possiblitiy would be to use:

gksudo "sh -c 'command1; command2; ...'" 

but that's not very elegant.

</div
 
 
 
 
0
 
vote

Я использую это довольно часто, чтобы убедиться, что пользователи управляют моими сценариями как «root» - вспоминать из памяти, поэтому у меня может быть пара в парах.

 <код> #!/usr/bin/env  main() {     # Code to be executed }  if [[ "$0" == "${BASH_SOURCE[0]}" ]]; then     [[ $EUID != 0 ]] && exec sudo "$0" $*     main $* fi   
 

I use this pretty frequently to ensure users run my scripts as "root" -- recalling from memory, so I may have a couple things turned around.

#!/usr/bin/env  main() {     # Code to be executed }  if [[ "$0" == "${BASH_SOURCE[0]}" ]]; then     [[ $EUID != 0 ]] && exec sudo "$0" $*     main $* fi 
</div
 
 

Связанный проблема

5  Дескриптор файла не генерируется  ( File descriptor not generated ) 
Я сталкиваюсь с проблемой в скрипте оболочки. Я сузил проблему и обнаружил, что это из-за файлового дескриптора со стандартного ввода, который не генерируется...

12  Как избежать персонажа Ampersand при использовании SED  ( How to escape the ampersand character while using sed ) 
Я хочу заменить все отдельные цитаты в строку с двумя одиночными цитатами с использованием SED. Но когда строка содержит <код> & символ, команда sed не замен...

0  Запустите Python Project из Shell  ( Run python project from shell ) 
Eclipse может запустить проект Python, а не только один <код> .py файл. Можно ли запустить целый проект из оболочки Python 3.x. Я немного посмотрел в это, но...

94  Автозаполнение Bash в Emacs Shell-Mode  ( Bash autocompletion in emacs shell mode ) 
в терминале GNOME, Bash делает Smart Auto-завершение. Например <код> apt-get in<TAB> становится <код> apt-get install в режиме Emacs Shell-mode, э...

0  Вложенный во время петли в скрипте Bash - внутреннее пропущенное  ( Nested while loop in bash script inner being skipped ) 
Я попробовал читать на этом, но не могу найти что-то, что исправляет мою проблему .. Проблема: у меня есть вложенный пока цикл, а внутренний пропускается полн...

1  Функция оболочки и истории Unix  ( Unix shell and history feature ) 
Как добавить функцию истории в оболочке Unix, чтобы пользователю получить доступ к последнему введенным Команда, пользователь сможет получить доступ до 10 ком...

1  Используя при команде в скрипте оболочки для планирования команды  ( Using at command in shell script for scheduling a command ) 
Я пытаюсь использовать функцию команды «AT», чтобы запланировать выполнение какой-либо конкретной команды при некотором пользовательском определенном времени....

2  Запустите скрипт оболочки внутри контейнера  ( Run shell script inside a container ) 
Я использую lemonlatte / docker-webvirtmgr в качестве базового файла, но проблема в том, что нет ключей SSH, настроенных для пользователя www-data, поэтому я ...

140  Получить выходной код фонового процесса  ( Get exit code of a background process ) 
У меня есть команда cmd, называемая из моего главного сценария оболочки Bourne, который занимает навсегда. Я хочу изменить сценарий следующим образом: За...

20  Переименование набора файлов до 001, 002, ... на Linux  ( Renaming a set of files to 001 002 on linux ) 
Я изначально имел набор изображений формы Image_001.jpg, image_002.jpg, ... Я прошел через них и удалил несколько. Теперь я хотел бы переименовать оставшиес...

0  Отличитель B / W ls -la и ls -la> ls-1.txt  ( Difference b w ls la and ls la ls 1 txt ) 
Если я сделаю ls -la, я получаю такие результаты, как <код> total 16 drwxr-xr-x 4 rockse staff 136 Apr 28 16:55 . drwx------+ 23 rockse staff 782 Apr ...

0  Каталог в качестве аргумента командной строки без использования полного имени пути в Linux  ( Directory as command line argument without using full path name in linux ) 
Как вы можете сделать содержимое другого каталога из текущего каталога без перечисления полного пути другого каталога в качестве аргумента командной строки? М...

9  Как писать и сопоставить регулярные выражения в / bin / sh script?  ( How to write and match regular expressions in bin sh script ) 
Я пишу скрипт оболочки для ограниченного микрокрытия на основе Unix, который не имеет Bash! / bin / sh не может запускать следующие строки по некоторым причин...

263  Как я могу преобразовать вкладки в пробелы в каждом файле каталога?  ( How can i convert tabs to spaces in every file of a directory ) 
Как я могу преобразовать вкладки в пробелы в каждом файле каталога (возможно, рекурсивно)? Также есть способ установить количество пробелов на вкладку? ...

1  Как мне запустить команду во всех файлах в папке (которая имеет подпункты), используя exiftool?  ( How do i run a command on all files in a folder which has sub folders using ex ) 
У меня есть папка, называемая фотографии & amp; Видео . У него есть папки для различных лет, для которых у меня есть фотографии и видео. В течение года пап...

Связанный проблема

5  Дескриптор файла не генерируется 
12  Как избежать персонажа Ampersand при использовании SED 
0  Запустите Python Project из Shell 
94  Автозаполнение Bash в Emacs Shell-Mode 
0  Вложенный во время петли в скрипте Bash - внутреннее пропущенное 
1  Функция оболочки и истории Unix 
1  Используя при команде в скрипте оболочки для планирования команды 
2  Запустите скрипт оболочки внутри контейнера 
140  Получить выходной код фонового процесса 
20  Переименование набора файлов до 001, 002, ... на Linux 
0  Отличитель B / W ls -la и ls -la> ls-1.txt 
0  Каталог в качестве аргумента командной строки без использования полного имени пути в Linux 
9  Как писать и сопоставить регулярные выражения в / bin / sh script? 
263  Как я могу преобразовать вкладки в пробелы в каждом файле каталога? 
1  Как мне запустить команду во всех файлах в папке (которая имеет подпункты), используя exiftool? 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.