私のコンピュータに共有をマウントするには、次のbashスクリプトがあります。
#!/bin/bash
BA_LAST_OCTET=144
BA_IP=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}' | awk -F'.' '{print $1,$2,$3"."}' OFS='.')$BA_LAST_OCTET
PROMPT="Sudo password: "
CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l)
if [ ${CAN_I_RUN_SUDO} -le 0 ]
then
. getpass.sh $1
echo $PASSWORD | sudo -S : >/dev/null 2>&1
fi
OUTPUT=$(sudo mount.cifs //$BA_IP/huginn/ /mnt/huginn/ -o username=fileshare,password="",rw,file_mode=0777,dir_mode=0777 2>&1)
if [ -z "$OUTPUT" ]; then
HUGINN="Huginn... Mounted."
else
HUGINN="Huginn... Error.\n"$OUTPUT
fi
OUTPUT=$(sudo mount.cifs //$BA_IP/muninn/ /mnt/muninn/ -o username=fileshare,password="",rw,file_mode=0777,dir_mode=0777 2>&1)
if [ -z "$OUTPUT" ]; then
MUNINN="Muninn... Mounted."
else
MUNINN="Muninn... Error.\n"$OUTPUT
fi
MSG=$HUGINN"\n"$MUNINN"\nFinalized."
if [[ $1 == "--gui" ]] ; then
zenity --info --title="Blackarmor" --text="$MSG" 2>/dev/null
else
echo -e "Mounting Blackarmor shares... \n\n"$MSG
fi
コマンドラインで非常にうまく動作します。ただし、Nemo Action で使用しようとすると、次のメッセージが表示されます。
Huginn... Error.
sudo: no tty present and no askpass program specified
Muninn... Error.
sudo: no tty present and no askpass program specified
Finalized.
. getpass.sh
GUIまたはコマンドラインからパスワードを取得してPASSWORD varに入れます。 Nemo Actionでもうまく動作します(テストしました)。
Nemoアクションは次のとおりです。
[Nemo Action]
Active=true
Name=Mount Blackarmor share
Exec=/bin/bash /usr/bin/ba --gui
Selection=Any
Extensions=any;
この問題をどのように解決できるかを知っている人はいますか?
また、より良い方法で実行する方法の提案にも開いています。 「ターミナルで実行」オプションを確認せずにこのスクリプトを指す実行プログラムをデスクトップに生成しようとすると、同じ問題が発生します。
編集する
@meuhが提案したように、次のように変更してみました。
. getpass.sh $1
echo $PASSWORD | sudo -S : >/dev/null 2>&1
これに関して:
#. getpass.sh $1
SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A : >/dev/null 2>&1
しかし、それは同じメッセージを示しています。 ssh-askpassはx11-ssh-askpassのUbuntu / Mintバージョンです(私はMintを使用しています)。 「Launch in Terminal」を選択すると、ランチャーで動作することに注意してください。しかし、後ろに見える大きな窓が本当に気に入らず、ニーモアクションでも動作しなくて良いと思います。
ベストアンサー1
独自のパスワードインポートコマンドを作成する代わりに、Fedoraシステム上の同じ名前のパッケージにあるコマンドなどの既存のsudo
コマンドを実行するように要求できます。x11-ssh-askpass
あなたは言いますか?
SUDO_ASKPASS=/usr/libexec/openssh/x11-ssh-askpass sudo -A somecommand
パスワードを入力できるグラフィカルユーザーインターフェースが表示されます。
sudo
あるいは、sudoersファイルを編集してセキュリティを下げ、ttyなしでコマンドを実行できるようにすることもできますsudo visudo /etc/sudoers
(注:必要に応じて回復するためにルートログインをどこかに残してください)。
Defaults:myname !requiretty
あなたのユーザー名で私の名前。
ttyが必要な場合は、script
次のコマンドを実行するときにttyを提供するプログラムを使用できます。
script <<<'SUDO_ASKPASS=/... sudo -A mycommand'
スクリプト全体をにまとめる必要がありますscript
。そうしないと、毎回新しいttyが取得され、sudo
毎回パスワードの入力を求められます。