お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2018-05-07 10:35:03

Joker07
新しいメンバ
登録日: 2018-05-07

スクリプト?の自動実行

はじめて投稿させて頂きます
先日購入した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
-----------------------------------------------------------------------------------------------------------------------------------------------

オフライン

 

#2 2018-05-08 01:25:00

TsutomuNakamura
メンバ
登録日: 2018-03-30

Re: スクリプト?の自動実行

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 ファイルに登録する方法などについては、そちらを実施する想定であればご連絡ください。

オフライン

 

#3 2018-05-08 09:09:54

Joker07
新しいメンバ
登録日: 2018-05-07

Re: スクリプト?の自動実行

TsutomuNakamura様

早速の回答ありがとうございます。
システム設定→StartupApplicationsにて、カスタムコマンド追加の部分に
echo -e "e\nsecret" | /opt/switch-dricer
入れてみました。
もちろん、パスワードとパス/ファイル名は変更してます。
同じものを端末から入力すると、ちゃんと動作するのですが
先のやり方では、うまく行きません。

やり方が間違えているのでしょうか?

また、「sudoers」に関しても調べてみましたが
よく解りませんでした。
こちらも、併せてご教授願えればと思います。
お手数掛けて申し訳ありませんが、よろしくお願いします。

オフライン

 

#4 2018-05-08 11:31:23

TsutomuNakamura
メンバ
登録日: 2018-03-30

Re: スクリプト?の自動実行

Joker07 さん

ご連絡ありがとうございます。

> システム設定→StartupApplicationsにて、カスタムコマンド追加の部分に
> echo -e "e\nsecret" | /opt/switch-dricer
> 入れてみました。
コマンドをターミナル(端末)を開いてコピー&ペーストして実行すると、どのような結果が返ってきますでしょうか?
ターミナルで実行すれば何かエラーメッセージが出てくるかもしれません。

おそらくですが、Ubuntu 18.04 LTS とかだとifconfig コマンドはデフォルトで入っていないので、
エラーで失敗しているのではないかと推測しています。

オフライン

 

#5 2018-05-08 14:13:16

Joker07
新しいメンバ
登録日: 2018-05-07

Re: スクリプト?の自動実行

TsutomuNakamura様

ターミナルから入力すると、ちゃんと「Enabled」が帰ってきます。
ちなみに、使用してるディストロはMint cinnamonです。

オフライン

 

#6 2018-05-09 16:22:50

TsutomuNakamura
メンバ
登録日: 2018-03-30

Re: スクリプト?の自動実行

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

オフライン

 

#7 2018-05-09 20:18:21

Joker07
新しいメンバ
登録日: 2018-05-07

Re: スクリプト?の自動実行

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の件、理解しました。
ありがとうございます。

オフライン

 

#8 2018-05-09 21:41:38

TsutomuNakamura
メンバ
登録日: 2018-03-30

Re: スクリプト?の自動実行

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 等の環境変数が整っていないのかもしれません、という推測です。

オフライン

 

#9 2018-05-10 23:58:19

Joker07
新しいメンバ
登録日: 2018-05-07

Re: スクリプト?の自動実行

TsutomuNakamura様

返信が遅くなりました
なぜか解りませんが、デバイスが認識されなくなりました
Winで起動すると問題なく動作するので、ハードの異常ではないようです
別のポートに移したり、リブートしてもダメなのでお手上げです

せっかくここまで教えて頂いたのに申し訳ありません
本当にありがとうございました

オフライン

 

Board footer

Powered by FluxBB