
Ubuntu日本語フォーラム

ログインしていません。
はじめて投稿させて頂きます
先日購入したwifi子機のドライバーを入れたところ
PCを起動する度に下記のスプリクト?(.shが付いてないのですが、これもスクリプトなんでしょうか)を実行しないと認識しません
起動時に自動実行するようにしたいのですが、sudoのパスワードとenableにするための"e"を引き渡す方法が解りません
教えて頂ければと思います
よろしくお願いします
-----------------------------------------------------------------------------------------------------------------------------------------------
!/bin/bash
# This script provides a fast way to enable or disable ArcherT2U USB adapter
printf "T2U-DRIVER\n\nENABLE OR DISABLE? ('e'|'d') "
read input
case $input in
'e')
sudo ifconfig ra0 up && sudo service networking restart && sudo service network-manager restart
printf "\nEnabled\n"
;;
'd')
sudo ifconfig ra0 down && sudo service networking restart && sudo service network-manager restart
printf "\nDisabled\n"
;;
esac
exit 1
-----------------------------------------------------------------------------------------------------------------------------------------------
オフライン
Joker07 さん
こんにちは。
> 起動時に自動実行するようにしたいのですが、sudoのパスワードとenableにするための"e"を引き渡す方法が解りません
ひとまずは、sudo パスワードを渡す方法と、"e" を引き渡す方法がわかれば良い感じでしょうか?
それぞれ分けて、ご連絡いたします。
また、対象のスクリプトは"/opt/switch-driver" という名前で存在するスクリプトと仮定します。
スクリプトの"read input" のすぐ下に"sudo -S -v"の1 行を追加してください。
read input
↓↓↓
read input
sudo -S -v
このようにすることで、以下のようにコマンドの実行方法を指定することで"e" とパスワードを両方渡せるようになります。
"e" とパスワード"secret" を渡す場合で、区切り文字は"\n"(改行)となる場合のコマンド登録例です。
echo -e "e\nsecret" | /opt/switch-dricer
個人的には、コマンド実行時にパスワードをプロンプトに打ち込むのはセキュリティ上あまり好きではないので、
sudoers ファイルでNOPASSWD を指定してパスワード無しで実行できるようにすることを考えます。
# あと、細かくてすみませんが、スクリプトの1 行目は
# "!/bin/bash"
# ↓↓↓
# "#!/bin/bash"
# になると思います。
/etc/sudoers ファイルに登録する方法などについては、そちらを実施する想定であればご連絡ください。
オフライン
TsutomuNakamura様
早速の回答ありがとうございます。
システム設定→StartupApplicationsにて、カスタムコマンド追加の部分に
echo -e "e\nsecret" | /opt/switch-dricer
入れてみました。
もちろん、パスワードとパス/ファイル名は変更してます。
同じものを端末から入力すると、ちゃんと動作するのですが
先のやり方では、うまく行きません。
やり方が間違えているのでしょうか?
また、「sudoers」に関しても調べてみましたが
よく解りませんでした。
こちらも、併せてご教授願えればと思います。
お手数掛けて申し訳ありませんが、よろしくお願いします。
オフライン
Joker07 さん
ご連絡ありがとうございます。
> システム設定→StartupApplicationsにて、カスタムコマンド追加の部分に
> echo -e "e\nsecret" | /opt/switch-dricer
> 入れてみました。
コマンドをターミナル(端末)を開いてコピー&ペーストして実行すると、どのような結果が返ってきますでしょうか?
ターミナルで実行すれば何かエラーメッセージが出てくるかもしれません。
おそらくですが、Ubuntu 18.04 LTS とかだとifconfig コマンドはデフォルトで入っていないので、
エラーで失敗しているのではないかと推測しています。
オフライン
TsutomuNakamura様
ターミナルから入力すると、ちゃんと「Enabled」が帰ってきます。
ちなみに、使用してるディストロはMint cinnamonです。
オフライン
Joker07 さん ご連絡ありがとうございます。
スクリプトの作りを確認したら、
失敗しても成功しても"Enabled" は出るようになっているみたいです(作成者の意図かもしれませんが)。。
echo -e "e\nsecret" | /opt/switch-dricer
を実行した時の全体の出力をいただくことは可能でしょうか?
> また、「sudoers」に関しても調べてみましたが
> よく解りませんでした。
> こちらも、併せてご教授願えればと思います。
すみません、こちらについて回答が漏れていました。以下に詳細が載っています。
https://qiita.com/RyodoTanaka/items/e9b15d579d17651650b7
例えばtsutomu ユーザでsudo コマンドで/opt/switch-driver を実行したときにパスワードを求められないようにするには
/etc/sudoers ファイルに以下の1 行を追加してください(sudo visudo コマンドを実行すると、デフォルトのエディタで開くようになります)。
tsutomu ALL=NOPASSWD: ALL
上記の1 行を追加すれば、以下のように"e" のみスクリプトに渡してあげることで済むようになります。
echo "e" | /opt/switch-driver
オフライン
TsutomuNakamura様
何度もご親切にありがとうございます。
実行後、ちゃんとネットに接続できているので、エラーにはなってないようです。
全体の出力は以下のとおりです。
echo -e "e\nsecret" | /opt/switch-dricer
switch-dricer
ENABLE OR DISABLE? ('e'|'d') [sudo] username のパスワード:
Enabled
試しに子機を外してやってみたところ
echo -e "e\nsecret" | /opt/switch-dricer
switch-dricer
ENABLE OR DISABLE? ('e'|'d') [sudo] username のパスワード: ra0: インタフェースフラグの取得中にエラーが発生しました:そのようなデバイスはありません
Enabled
となりました。
sudoersの件、理解しました。
ありがとうございます。
オフライン
Joker07 さん
出力結果のご提示ありがとうございます。
スクリプトは正常に行っているということで、あと考えられるとしたら
StartupApplications に登録する時に以下のどちらかのコマンドで登録して、動作確認をお願いできますでしょうか?
/bin/bash -c "echo -e 'e\nsecret' | /opt/switch-driver"
or
/bin/bash -l -c "echo -e 'e\nsecret' | /opt/switch-driver"
※secret はパスワードで置き換えてください
※先程までswitch-dricer とtypo してましたのでスペル修正しました…
StartupApplications でコマンドを実行する時、PATH 等の環境変数が整っていないのかもしれません、という推測です。
オフライン
TsutomuNakamura様
返信が遅くなりました
なぜか解りませんが、デバイスが認識されなくなりました
Winで起動すると問題なく動作するので、ハードの異常ではないようです
別のポートに移したり、リブートしてもダメなのでお手上げです
せっかくここまで教えて頂いたのに申し訳ありません
本当にありがとうございました
オフライン