3

NAS デバイスが常にオンラインであるとは限らないため、sudo を使用してアドホック ベースで 2 つの個別のネットワーク ドライブをマウントしたいので、/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

ファイルブラウザウィンドウからそのスクリプトを正常に実行できるようにするには、「ターミナルで実行」を選択する必要があります。したがって、sudo パスワードを入力するためのプロンプト ウィンドウを開く gksudo を使用することをお勧めします。

ただし、代わりに次のコードを使用すると、sudo パスワードを 2 回入力する必要があります。

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 は短い記憶を持っていますか?

4

2 に答える 2

5

これはスクリプトなので、スクリプトにsudo/gksudoコマンドを含めずに、 を使用してスクリプトを呼び出すのが最善の方法sudoです。

gksudoメモリ自体はないと思いますsudo。バックグラウンドで使用されているのはそれだけです。

別の可能性は、次を使用することです。

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

しかし、それはあまりエレガントではありません。

于 2012-05-06T11:41:49.830 に答える
0

私はこれをかなり頻繁に使用して、ユーザーが私のスクリプトを「ルート」として実行できるようにしています。

#!/usr/bin/env

main() {
    # Code to be executed
}

if [[ "$0" == "${BASH_SOURCE[0]}" ]]; then
    [[ $EUID != 0 ]] && exec sudo "$0" $*
    main $*
fi
于 2016-10-27T01:48:51.343 に答える