私はAlpine Linuxをインストールしましたが、ワイヤレスネットワークを除くすべてが期待どおりにスムーズに行われています(XFCEの電源ボタンと再起動ボタンは灰色で表示されていますが、ここでは関係ありません)。
私はコンピュータを使用している人ではありません。コンピュータがしなければならない唯一の2つのことは、ワイヤレスネットワークに接続し、ブラウザを介してインターネットにアクセスすることです。しかし、このコンピュータを使用している人はまったく技術的な知識がないので、彼らにそうするように言うことはできません。この(アルパインLinuxワイヤレス接続ガイド)ネットワークを変更するたびにターミナルを見るだけで怖いです。だから彼らにGUIを提供する必要があります。
Alpine Linux用のネットワーク管理者のGUIを見つけようとしています。私にとって本当に必要なのは、Wicdのようなものですが、Alpineのテストリポジトリでconnmanとnetworkmanagerだけを見つけましたが、どちらも正しく起動せず、APKBUILDを作成してコンパイルする方法を学んでも、wicdがそれ自体で動作できるかどうか疑問に思います。時に..
だから結局、あきらめる前にスクリプトで何かを作れないかという気がしました。私の言うことは、私がしなければならないことは、Alpine Linux Wikiのワイヤレス接続ガイドでsudoのように言うことだけです。
走ったばかり
iwlist wlan0 scanning
ESSIDを見つけ、信号強度でソートしてきれいにリストします。 1つを選択すると、パスワードの入力を求めるパスワードプロンプトが表示されます。以来...
iwconfig wlan0 essid MyNet #set SSID
wpa_passphrase PASSPHRASE > wpa.conf #set Passphrase
wpa_supplicant -Dwext -iwlan0 -c ./wpa.conf #Connect
それはすべてです。接続性と自動プロンプトなどを確認する独自の方法を見つけることができますが、まずGTKやQtプログラム全体を書かずにこれを行うことができるかどうかを知る必要があります。
Zenityのようなスクリプトを使って素早く簡単にしたいのですが、可能ですか?誰かが私に例を与えることができますか?ありがとうございます。
(しかし、AlpineにはBASHではなくASHが付属しています。ASHでスクリプトを書くことができれば幸いですが、そうでない場合はBASHやPythonを使用してもかまいません。)
答え1
話すべきことの後何時間かかりました。私はzenityといくつかのsudoersの変更を使ってまともなものを調理することができました。既知のGUIを入手する簡単な方法なしに、古いワイヤレスネットワーキングソフトウェア(ワイヤレスツールなど)のみを使用してLinuxディストリビューションを使用する醜い状況に他の人が閉じ込められる場合に備えて、これらすべてを実行した方法を段階的に説明します。 。本当に...
依存関係:
ash(or bash), sudo, zenity, awk, wget, ping, wpa_supplicant, wireless-tools (ip, iwlist, iwconfig, wpa_passphrase)
また、オプションで次のように異なります。通知が送信されました。(これらのインスタンスは次のように簡単に置き換えることができます。ジェニティ - 通知しかし)
まず、私/すべてのユーザーが特定のコマンドを実行できるようにsudoersファイルを設定する必要がありました。次の行があります。 (私はAlpine Linuxを使用しています。あなたも私と同じプログラムを持っているかもしれませんが、その実行可能ファイルは場所が異なるので、最初にそれぞれへの正しいパスを見つけます。)
後で生成する奇妙なコマンド(wpa_restart)を見ることができます。
sudoers(visudo)から:
ALL ALL=(ALL) NOPASSWD: /usr/sbin/iwlist, /usr/sbin/iwconfig, /sbin/ip /sbin/wpa_restart
続行する前に、起動時に起動するようにwpa_supplicantを設定してみましょう。 (Open-RCユーザー、systemdユーザーはsystemdモードでこれを行う必要があります。)
rc-update add wpa_supplicant boot
これを行った後にログインしてください。rootユーザーとして(または使用数) 次のコマンドを実行します。
echo > /etc/wpa_supplicant/wpa_supplicant.conf
chmod +777 /etc/wpa_supplicant/wpa_supplicant.conf
chmod -r /etc/wpa_supplicant/wpa_supplicant.conf
echo > /usr/sbin/wireless_gui
chmod +x /usr/sbin/wireless_gui
echo > /usr/sbin/wireless_check
chmod +x /usr/sbin/wireless_check
echo > /sbin/wpa_restart
chmod +x /sbin/wpa_restart
次に、実際にこのファイルをいくつかのスクリプトで埋めましょう。
/sbin/wpa_restart(これはopen-rcでのみ機能し、systemdユーザーには他のものが必要です。このファイルはwpa_supplicantを再起動するために使用されます。 :
#!/bin/ash
rc-service wpa_supplicant restart
/usr/sbin/wireless_check (接続確認、ssid 選択 GUI を起動していない場合):
#!/bin/ash
wget -q -s http://google.com
if [[ $? -eq 0 ]]; then
eth=$(ifconfig eth0 | grep inet addr)
if [ $eth !=" " ];then
SSID=$(iwconfig wlan0 | grep ESSID | cut -d: -f2 )
notify-send "Connected to Wireless Network" "$SSID"
else
notify-send "Connected Via Ethernet" ""
fi
else
/usr/sbin/wireless_gui
fi
/usr/sbin/wireless_gui(メインコンテンツ):
#!/bin/ash
sudo ip link set wlan0 up
ssid=$(sudo iwlist wlan0 scanning | awk -F: 'BEGIN{ printf "zenity --list --text \"Available Networks\" --list --column ESSID --column Security --column Signal "; }/Quality/{ split($0,x,"="); Quality = int(x[2]*100/70+.5); }/Encryption/{ Encryption = $2; }/ESSID/{ ESSID = $2; printf "%s \"%s\" \"%s%%\" \\\n", ESSID, Encryption, Quality}' |sh);
if [ $ssid !=" " ]; then
zenity --warning --text "Failed to select network!"
else
$1="30"
echo $1
sudo ip link set wlan0 down
sudo iwconfig wlan0 essid $ssid
wpa_passphrase $ssid > /etc/wpa_supplicant/wpa_supplicant.conf $(zenity --password --title "Secured Network")
sudo ip link set wlan0 up
sudo wpa_restart
sleep 2
success=$(ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error)
if [ $success = "error" ]; then
echo $success
zenity --question --title "Wrong Password" --text "Retry?"
while [[ $? -eq 0 ]]; do
wpa_passphrase $ssid > /etc/wpa_supplicant/wpa_supplicant.conf $(zenity --password --title "Secured Network")
sudo wpa_restart
sleep 2
success=$(ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error)
if [ $success = "error" ]; then
zenity --question --title "Wrong Password" --text "Retry?"
else
notify-send "Connected to Wireless Network" "$ssid"
break
fi
done
else
notify-send "Connected to Wireless Network" "$ssid"
fi
fi
それは私があなたが持っているものを持って働くものと呼ぶものです:)
次に、root/su プロンプトを終了し、以下を実行します。ワイヤレスグラフィックユーザーインターフェースユーザーとしてすべてが正常に機能していることを確認したら、作業は完了です。
それがうまくいかない場合、間違っている可能性がある唯一のことは、Ashがないことです(#!/ bin / ashを#!/ bin / bashに置き換えて修正)。 sudoersのパスの1つが間違っています。 、コマンドのいずれかをchmodすることを忘れました。ワイヤレスインターフェイスはwlan0と呼ばれません(使用設定されている場合またはIPリンクwlan0へのすべての言及を見つけて、名前をインターフェース名に変更します。それ以外の場合は依存関係がありません。
理想的な設定は次のとおりです。ワイヤレスチェックデスクトップ環境にログインするたびに実行されます。インターネット接続を確認して接続すると、通知を送信してから起動します。ワイヤレスグラフィックユーザーインターフェースそうでない場合。ワイヤレスGUIは、近くのすべてのESSIDを検索して一覧表示し、1つを選択してパスワードを入力します。接続に失敗すると、成功するまでパスワードを再入力するか拒否するかを尋ねられます。
Network Managerをインストールしたくない場合(または私のように)インストールできない場合は、これは非常に良いソリューションです。