ネットワークウィザードの改良(net-setup)

4.X系の開発

モデレータ: 暇人, YoN, nyu

アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net-setup-20100225

投稿記事 by シノバー »

改良したネットワークウィザードをアップしました。
動作確認は Baffalo WLI-UC-G300HP ドライバは rt3070sta で行いました。
WAP/TKIP, WEP128, WEP64 で動作しました。ただし暗号化キーは16進数限定。net-setup-20100225.petこちらから
  1. みのむしさんの情報をもとに、インターフェースの初期化後1秒、設定後1秒待ってから、設定ができたかをチェックし、ダメなら待ち時間をそれぞれ2秒に、また4秒、8秒まで伸ばして、それでもダメならあきらめます。
  2. 設定に失敗したときに正しくエラーを返すようにしました。また DHCPによる IP取得でタイムアウトしたときもちゃんとエラーを返します。
  3. エラーメッセージの和訳を一部改善しました。
  4. 有線/無線など複数の経路がある場合、起動時あるいはデスクトップアイコンから「接続」を選択したときに、これまではすべてのインターフェースを繋ごうとしますが、この改良版ではひとつ接続が成功すれば、それ以上は接続を増やしません。有線(eth0)優先です。
  5. デスクトップアイコンから「接続」を選択すると、いったん接続を切断してから再接続します(restart)。2月27日修正追記:これまでも connect/restart は同じ動作でした。
  6. 有線(eth0)が生きており、DHCPでIPが取得できる環境ならば、手動での設定なしに、PC起動時、あるいはデスクトップアイコンから「接続」を選択したとき、自動接続します。
このパッケージはパピー4.xに対する変更部分だけをパックしています。すでにネットワークウィザードがインストールされている環境の上に重ねてインストールしてください。
最後に編集したユーザー シノバー [ 10/02/27(土) 16:09 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
みのむし
記事: 1164
登録日時: 08/09/10(水) 13:56
お住まい: 福岡市中央区草香江1-2-40-101号
連絡する:

Re: ネットワークウィザードの改良(net-setup-20100225)

投稿記事 by みのむし »

>改良したネットワークウィザードをアップしました。

シノバーさん、ありがとうございます。
早速、ダウンロードさせて頂きます。

ちょっと使ってみた感想ですが、非常に調子良い :D
「スキャンを2度行う」問題は解決していませんが...
以下のように実行してうまく行きました。

・ra0 up

コード: 全て選択

# ifconfig ra0 up
※「iwlist scan」を実行する前に実行しておく...

・デスクトップ「接続」アイコンをクリック
 (スキャンは1回でうまく行きました)

/etc/modprobe.conf の最下行に以下の行を追記した方がいいような...

alias ra0 rt2860sta
alias wlan0 ath9k

なお、動作には関係ありませんが、明らかなプログラムミスを見つけましたのでお知らせします。

/usr/sbin/wag-profiles.sh 1355行 $の抜け落ち

パッチ)
diff /usr/sbin/wag-profiles.sh.org /usr/sbin/wag-profiles.sh
1355c1355
< export NETWIZ_Connecting_DIALOG="<window title=\"L_TITLE_Puppy_Network_Wizard\" icon-name=\"gtk-network\" window-position=\"1\">
---
> export NETWIZ_Connecting_DIALOG="<window title=\"$L_TITLE_Puppy_Network_Wizard\" icon-name=\"gtk-network\" window-position=\"1\">
最後に編集したユーザー みのむし [ 10/04/23(金) 11:10 ], 累計 2 回
みのむし
Notebook PC HP G62
CPU: Intel(R) Core(TM)i5 M450 @ 2.40GHz
MEM: 4GB
Puppy Linux Quickset 5.1.1 JP
PC内蔵無線LANデバイス RTL8171(r8192se_pci)
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net-setup-20100307

投稿記事 by シノバー »

みのむし さんが書きました:/usr/sbin/wag-profiles.sh 1355行 $の抜け落ち
みのむしさん、ありがとうございます。

ご指摘の部分と、Wake-onLan が有効のときにデスクトップアイコンから切断できなかったものを、常に切断できるようにしました。
viewtopic.php?f=33&t=1638#p12224

/etc/rc.d/rc.networkの問題であったので、/usr/local/apps/ConnectのほうはPETには含めてません。
net-setup-20100307.pet を同じところにアップしました。

スキャンが2度必要……は分からんなあ
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net-setup 改良版による起動時の接続エラー

投稿記事 by シノバー »

シノバー さんが書きました:設定に失敗したときに正しくエラーを返すようにしました。また DHCPによる IP取得でタイムアウトしたときもちゃんとエラーを返します。
こうすると、起動時にエラーで繋がらないことがあります。もしかしたら Flashメモリ(PUPMODE=13)の場合だけかもしれません。
有線のLANで、DHCP。

/tmp/bootsysinit.log あるいは /tmp/dhcpcd.log を見ると、DHCPによるIP取得ができたあと、次のようなエラーが記録されています。

コード: 全て選択

Debug, eth0: writing /var/lib/dhcpcd/dhcpcd-eth0.info
Error, eth0: fopen `/var/lib/dhcpcd/dhcpcd-eth0.info': Input/output error
/var/lib/dhcpcd は存在するが、中は空っぽです。
起動後、デスクトップアイコンを右クリックから「ネットワークに接続」を選ぶと同様に、取得IPは正しく表示されるのに、最後はエラーとなります。何度やっても同じ。

このエラーはこれまでも起こっていたのだろうが、エラーチェックができていなかったので見過ごされてきたのだと思う。

不思議なことに

コード: 全て選択

touch /var/lib/dhcpcd
を実行した後に接続を試みると成功し、/var/lib/dhcpcd/dhcpcd-eth0.info も正しく書けています。
:?: :?: :?:
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

Re: net-setup 改良版による起動時の接続エラー

投稿記事 by シノバー »

シノバー さんが書きました:不思議なことに
touch /var/lib/dhcpcd
を実行した後に接続を試みると成功
よく分からないが、 /usr/sbin/wag-profiles.sh 内 setupDHCP() の冒頭にこれを入れてやると、うまく動きます。
net-setup-20100307 の /usr/sbin/wag-profiles.sh 197行目から

コード: 全て選択

setupDHCP()
{
	# 7mar10:  avoid dhcpcd error writing in /var/lib/dhcpcd
	mkdir -p /var/lib/dhcpcd && touch /var/lib/dhcpcd
mkdir -p だけではダメで、 touch してやる必要があった。
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

Re: スキャンを2度

投稿記事 by シノバー »

みのむし さんが書きました:「スキャンを2度行う」問題は解決していませんが...
以下のように実行してうまく行きました。

・ra0 up

コード: 全て選択

# ifconfig ra0 up
※「iwlist scan」を実行する前に実行しておく...

・デスクトップ「接続」アイコンをクリック
 (スキャンは1回でうまく行きました)
ネットワークウィザードのスキャンボタンを押すと cleanUpInterface() が実行され、その中で ifconfig ra0 up は実行されているはずなんですが……?
/usr/sbin/wag-profile.sh の 1334行目からを読むと

コード: 全て選択

	if ! ERROR=$(ifconfig "$1" up 2>&1) ; then
	  giveErrorDialog "${L_MESSAGE_Failed_To_Raise_p1}${1}${L_MESSAGE_Failed_To_Raise_p2} ifconfig $1 up
$L_MESSAGE_Failed_To_Raise_p3
$ERROR
"
	  return 1
	fi
ifconfig ra0 up に失敗すると、エラーメッセージが立ち上がることになってます。
1回目のスキャンで、エラーメッセージは出ますか?
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net-setup-20100310

投稿記事 by シノバー »

2度スキャンしなければばらないというのは置いておいて、とりあえず net-setup-20100307 に /var/lib/dhcpcd のリフレッシュを加え、 net-setup-20100225 の net-setup.mo を同梱した PETを作りました。koropup2.03 2010年3月8日版と同等。
net-setup-20100310.pet こちらから
The bar master, Shino's Bar
http://shinobar.net/
yumisaiki
記事: 3
登録日時: 10/03/15(月) 22:48

Re: ネットワークウィザードの改良(net-setup-20100310)

投稿記事 by yumisaiki »

ありがとうございます。この度、初めて自動的に接続となりました。いちいち端末でiwconfigとか入れていたので大変でした。
感謝です。こういうものを作れるようになるには、何から勉強したらいいのでしょうか?
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

Re: ネットワークウィザードの改良(net-setup-20100310)

投稿記事 by シノバー »

yumisaiki さんが書きました:こういうものを作れるようになるには、何から勉強したらいいのでしょうか?
yumisaikiさん、ありがとう。励みになります。

「何から勉強」というのはカフェで話すべきことかと思いますが……。やはり自分の必要に応じてということがいちばん大きいでしょうか。Linuxなどオープンソースというのは、困ったときに自分で直すことができ、またそれをみんなで利用できるというところが優れているところです。

私の場合、一から作るというものはあまりありません。先人の作ったものをちょこっと直すだけです。パピーの場合シェルスクリプトで作られたものが多いので、コンパイルなどの作業なしにソースがそのまま見えていて、修正したものもすぐに実行して試すことができます。

本はたくさん読みますが、ぜんぜん身に付きませんでした。やはり必要に迫られ、なんとかいじくっていくということを繰り返すうちに広がってくるものだと思います。

既存のソフトをいじるとき、その言語をまったく知らないけれど、なんとなく勘でいじってみるということをけっこうやってます。そのうち、やっぱりその言語を勉強せにゃあかんかと、でも必要な部分だけつまみ食いみたいなやりかたで来ています。

たとえば英語のメッセージを日本語にしたいとき、ソースからその文章を見つけて書き換えることで、たいてい変更できます。予想に反してうまくいかなかったら、なぜかを調べて、また新しい技を発見するかもしれません。そんなことの積み重ねだったように思います。パピーの日本語化に携わっておられる方は同じような経験をされている方が多いのではないでしょうか。
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net_setup-20140422

投稿記事 by シノバー »

パピー 4.x/5.x 共通ですが、ここに付けておきます。

「パピーが無線LAN設定を覚えてくれない」というトラブルをよく聞きます。
最初に設定をして繋がるが、PCを再起動すると自動接続されていない。もういちど最初から設定をすると繋がるというものです。

これは設定を覚えていないのではなくて、無線LAN接続が不安定だからでしょう。適切なドライバを得ることで解決する場合や、Fresbie で解決する例もあります。

最初から設定をすると繋がるが、自動接続されないというのは、どこかのタイミングに依るのかもしれません。そこで自動でスキャンするところで時間待ちを十分に取るようにしました。
Network Wizard で繋がるが、再起動後の自動接続に失敗するという症状のある場合、お試しください。
http://shino.pos.to/party/bridge.cgi?pu ... 140422.pet
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3138
登録日時: 09/03/21(土) 00:05
連絡する:

net_setup-20140422 の詳細

投稿記事 by シノバー »

シノバー さんが書きました:自動でスキャンするところで時間待ちを十分に取るようにしました。
/etc/rc.d/rc.network のdiff です。
# diff rc.network.old rc.network

コード: 全て選択

52a53
> # shinobar
57a59,60
> # 31may12: wait eth0 reday
> # 22apr2013: more delay at scan (run_iw_scan)
220,221c223,224
< 	checkIsPCMCIA
< 	[ -n "$IsPCMCIA" ] && sleep 5
---
> 	#checkIsPCMCIA
> 	#[ -n "$IsPCMCIA" ] && sleep 5
225,230c228,242
< 	iwlist "$INTERFACE" scan >/tmp/iwscan1.tmp 2>&1
< 	if [ -n "$IsPCMCIA" ] ; then
< 	  sleep 1
< 	else
< 	  usleep 100000
< 	fi
---
> 	#shinobar: more wait
> 	W=1
> 	for HOTOKE in $(seq 3); do
> 	  sleep $W
> 	  iwlist "$INTERFACE" scan >/tmp/iwscan1.tmp 2>&1
> 	  grep -q 'Scan completed' /tmp/iwscan1.tmp && break
> 	  W=$(($W * 2))
> 	done
> 	sleep 1
> 	#shinobar: more wait END
> 	#if [ -n "$IsPCMCIA" ] ; then
> 	#  sleep 1
> 	#else
> 	#  usleep 100000
> 	#fi
342a355
>   # 31may12: wait eth0 (to be auto configured) reday
347c360
<     for ONE in $CONFIGURED ; do
---
>     for ONE in eth0 $CONFIGURED ; do
もともとPCMCIAカードの場合に時間待ちが必要なことが分かっていたようですが、USBにかんしての配慮がありませんでした。PCI内蔵のものでも時間が掛かることもあるので、ここは無条件に1秒の待ち時間と、初回はiwlistが成功するまで 2秒、4秒と、待ち時間を追加して試行します。

net_setup-20140422 にはWPA-AESをサポートする修正をされた 571JPの /usr/sbin/wag-profiles.sh を収録しています。

同梱の /usr/sbin/connectwizrd_2nd は 4.x など /usr/bin/gettetx.sh の無いパピーでも問題ないよう修正されています。

パピー 4.x など古いバージョンでは ipinfo、firewall-setup、hostname-set などが欠けています。最新パピーには含まれている、これらスクリプトのバックポートも要るかもしれません。
The bar master, Shino's Bar
http://shinobar.net/
返信する