2012-05-06 11 views
3

Я хочу использовать sudo для монтирования двух отдельных сетевых дисков на разовой основе, так как мое устройство NAS не всегда находится в сети, поэтому я не уверен, что добавление чего-либо в/etc/fstab необходимо.shell script - Как использовать gksudo для выполнения последовательных операций 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 чтобы «работать как Суды» следующим образом, однако только первый диск установлен как первый сценарий выше потерпит неудачу тихо, если не бежать от терминал:

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 
} 

это только у меня или делает ГКС udo имеют короткую память?

ответ

4

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

Не думаю, что gksudo имеет любую память, вот и все sudo s делает, что используется в фоновом режиме.

другой possiblitiy будет использовать:

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

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

+0

В хаотичном мире, который является моим домашним компьютером, я думаю, что смогу справиться с неэлегантным решением, особенно когда оно достигнет именно того, что я хотел сделать. Элегантным решением было бы добавить диски в/etc/fstab, отрицая необходимость в sudo, но вы дали мне удобство, которое я искал, спасибо! –

0

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

#!/usr/bin/env 

main() { 
    # Code to be executed 
} 

if [[ "$0" == "${BASH_SOURCE[0]}" ]]; then 
    [[ $EUID != 0 ]] && exec sudo "$0" $* 
    main $* 
fi