shell脚本 - 如何使用gksudo只用一个密码提示执行连续的sudo操作?

Stu*_* Jr 3 shell sudo gksudo

我想用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
Run Code Online (Sandbox Code Playgroud)

我需要选择"在终端中运行"才能从文件浏览器窗口成功运行该脚本.因此我更喜欢使用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"
Run Code Online (Sandbox Code Playgroud)

在这一点上我试图将智能和使用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"
Run Code Online (Sandbox Code Playgroud)

我真正希望能做的是以下内容,但我不确定它是否可行:

gksudo this{
command1
command2
command3
}
Run Code Online (Sandbox Code Playgroud)

它只是我还是gksudo有短暂的记忆?

mat*_*ata 5

这是一个脚本,所以最好的方法是不要在脚本中使用sudo/ gksudo命令,而是使用脚本调用脚本sudo.

我认为自己没有gksudo任何记忆,sudo这就是在后台使用的所有内容.

另一种可能是使用:

gksudo "sh -c 'command1; command2; ...'"
Run Code Online (Sandbox Code Playgroud)

但那不是很优雅.