/ ̄ ̄ ̄ ̄ ̄\
| ・ U |
| |ι |つ
U||  ̄ ̄ ||
 ̄  ̄
2ちゃんねるの過去ログを黙々と食べる花子と(花代)が愚痴をこぼすスレッドです(^_^;)花子ファミリー誕生(^_^;)
プロジェクトぞうさん
http://www.maido3.com/server/zousan/
花子と花代の基礎体温(^_^;)
http://mickey.mirv.net/2ch/hanakotmp.html
花子転送量グラフ
http://traffic.maido3.com/jfj1/McNh/nXAg/
花代転送量グラフ
http://traffic.maido3.com/eSmh/lgJ7/XcOp/
花子負荷グラフ
http://ch2.ath.cx/memories2.html
花子ファミリー
http://love.45.kg/ililili/graph-hanakos.html
前スレ
花子 ★の秘密の花園 3
http://qb5.2ch.net/test/read.cgi/operate/1223528489/
花子 ★の秘密の花園 2
http://qb5.2ch.net/test/read.cgi/operate/1221978255/
花子 ★の秘密の花園
http://qb5.2ch.net/test/read.cgi/operate/1211962556/
AA(^_^;)
http://www.maido3.com/server/aa/
花子 ★と花代 ★の秘密の花園4
■ このスレッドは過去ログ倉庫に格納されています
644 :ピロリ [sage] :2008/10/19(日) 23:56:47 ID:BwRV+0i+0
過去ログはシンプルな形にするので
実験的に一アカウントだけ test/.htaccess をうまくいっているやつにかえて
うまく行くことを確認するだけでいいですー
収容が終わってから長い本番が始まるということで
1) read.cgi offlaw.cgiだけのシンプルな形にする
2) read.cgi .htaccess 等は /md/tmp に一個だけ置き各アカウントはシンボリックリンク
3) read.cgiの広告はどーせ更新されないので特別仕様へ
4) F35等お掃除プログラムの大改造、アカウントをまたいでサーバ内で一個起動
5) kakolog.html の整備(これは何年かかるか・・・)
等々
過去ログはシンプルな形にするので
実験的に一アカウントだけ test/.htaccess をうまくいっているやつにかえて
うまく行くことを確認するだけでいいですー
収容が終わってから長い本番が始まるということで
1) read.cgi offlaw.cgiだけのシンプルな形にする
2) read.cgi .htaccess 等は /md/tmp に一個だけ置き各アカウントはシンボリックリンク
3) read.cgiの広告はどーせ更新されないので特別仕様へ
4) F35等お掃除プログラムの大改造、アカウントをまたいでサーバ内で一個起動
5) kakolog.html の整備(これは何年かかるか・・・)
等々
796 :ピロリ [sage] :2008/10/22(水) 18:29:46 ID:ruqJJ23l0
>>795
りょうかいー
【具体策】
サーバ毎に二個のスクリプトを置こう。
A) サーバ起動毎時に一回動くスクリプト(サーバ内の各種設定)
B) 定期的に外から呼ばれるお掃除プログラム
どちらもアカウント横断的に作業するので十分注意 ← こことても重要
既存のアカウント内に作ると経験上移転とかでの制約があるので
独自のアカウントを振って別とドメインにしよう。ドメイン自体は公開情報。
(なんでもいいです hana301.ula.ccとか)
A,Bのスクリプトは作り易い(テストし易い)ようにpublic_html下に置こう。
ただしバシバシ叩かれたらいやだから場所や名前は内緒。
public_html/index.html自体かそれからのリンクで動いているかどうかが
解るようにしよう(つまり動的なコンテンツ)
まずはこの仕様でスクリプト(Perl? 他でもいいけど、)を作る。
そして動かす(中身は起動されたら所定の位置にログを書き出すというだけ)。
二日もあれば出来るかな?
スクリプトはみんながここで教えると、
>>795
りょうかいー
【具体策】
サーバ毎に二個のスクリプトを置こう。
A) サーバ起動毎時に一回動くスクリプト(サーバ内の各種設定)
B) 定期的に外から呼ばれるお掃除プログラム
どちらもアカウント横断的に作業するので十分注意 ← こことても重要
既存のアカウント内に作ると経験上移転とかでの制約があるので
独自のアカウントを振って別とドメインにしよう。ドメイン自体は公開情報。
(なんでもいいです hana301.ula.ccとか)
A,Bのスクリプトは作り易い(テストし易い)ようにpublic_html下に置こう。
ただしバシバシ叩かれたらいやだから場所や名前は内緒。
public_html/index.html自体かそれからのリンクで動いているかどうかが
解るようにしよう(つまり動的なコンテンツ)
まずはこの仕様でスクリプト(Perl? 他でもいいけど、)を作る。
そして動かす(中身は起動されたら所定の位置にログを書き出すというだけ)。
二日もあれば出来るかな?
スクリプトはみんながここで教えると、
2008/10/24(金) 14:36:49ID:SZeMqOZt0
∧_∧ ________ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)/ ̄/ ̄/ < ○○! ○○○○○○○○○○!
( 二二二つ / と) \_________
| / / /
__ |  ̄| ̄ ̄
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
つことで>2の(4が>3で進行中(^_^;)
命題
・定期的に外から呼ばれるお掃除プログラム
・アカウント横断的に作業する
・ユーザーアカウントの1つに設置されている
のアイデア絶賛募集中(^_^;)
命題
・定期的に外から呼ばれるお掃除プログラム
・アカウント横断的に作業する
・ユーザーアカウントの1つに設置されている
のアイデア絶賛募集中(^_^;)
#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
if ( -e "mirv_suteki.log" ) {
open(OUT, ">>mirv_suteki.log");
}else {
open(OUT, ">mirv_suteki.log");
}
close(OUT);
これで(^_^;)
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
if ( -e "mirv_suteki.log" ) {
open(OUT, ">>mirv_suteki.log");
}else {
open(OUT, ">mirv_suteki.log");
}
close(OUT);
これで(^_^;)
1000取ってしまた;
ファイル存在確認いらないんじゃね?いるんだっけ?
なんかうまく追記されてない(^_^;)
http://hana301.ula.cc/c.cgi
http://hana301.ula.cc/c.cgi
2008/10/24(金) 15:20:06ID:JGievMm90
2008/10/24(金) 15:20:19ID:vMVWqA7m0
DOSだと>>でファイルなければ作ってたけどうにも一緒じゃないの?
>10
!!!!!!!!!!!!!!!!(^_^;)orz
!!!!!!!!!!!!!!!!(^_^;)orz
#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
if ( -e "mirv_suteki.log" ) {
print "mirv_suteki.logは存在します。\n" ;
open(OUT, ">>mirv_suteki.log");
}else {
print "mirv_suteki.logは存在しません。\n" ;
open(OUT, ">mirv_suteki.log");
}
print OUT "mirv!<>$date\n";
close(OUT);
うまく動いたー(^_^;)
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
if ( -e "mirv_suteki.log" ) {
print "mirv_suteki.logは存在します。\n" ;
open(OUT, ">>mirv_suteki.log");
}else {
print "mirv_suteki.logは存在しません。\n" ;
open(OUT, ">mirv_suteki.log");
}
print OUT "mirv!<>$date\n";
close(OUT);
うまく動いたー(^_^;)
ということで、ログを書きだすことはできるようになったわけだ(^_^;)ぶふう
このログを/home/ch2tmp7/public_html/に書き出せれば勝ち
このログを/home/ch2tmp7/public_html/に書き出せれば勝ち
そだよねたしか。
ファイル無ければ作成、あれば追記なはずー
ファイル無ければ作成、あれば追記なはずー
で、アカウント横断の計略としては(^_^;)
a) root権限で実行する
b) Suexecを使う
c) なんか他の方法考える
で、b)はとりあえず行き詰った(^_^;)のでa)を試そう
つまり・・・・root権限で実行してしまうのだった。
うまく書けるかな?
a) root権限で実行する
b) Suexecを使う
c) なんか他の方法考える
で、b)はとりあえず行き詰った(^_^;)のでa)を試そう
つまり・・・・root権限で実行してしまうのだった。
うまく書けるかな?
>15
あ(^_^;)
open(OUT, ">>mirv_suteki.log");
ってやると、ファイルがない時はファイル作って書きこむんだ(^_^;)
あ(^_^;)
open(OUT, ">>mirv_suteki.log");
ってやると、ファイルがない時はファイル作って書きこむんだ(^_^;)
2008/10/24(金) 15:30:36ID:JGievMm90
perl5なら
If MODE is `'>>'', the file is opened for appending, again being created if necessary.
If MODE is `'>>'', the file is opened for appending, again being created if necessary.
>>10だった;
#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
open(OUT, ">>mirv_suteki.log");
print OUT "mirv!<>$date\n";
close(OUT);
これで動いた(^_^;)
print "Content-type: text/plain\n\n";
print "<a href=\"mirv_suteki.log\">マァヴさんって素敵!</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
open(OUT, ">>mirv_suteki.log");
print OUT "mirv!<>$date\n";
close(OUT);
これで動いた(^_^;)
さて、こういうものを作ってみた(^_^;)
#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "<a href=\"http://tmp7.2ch.net/mirv_suteki.log\">http://tmp7.2ch.net/mirv_suteki.log</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
open(OUT, ">>/home/ch2tmp7/public_html/mirv_suteki.log");
print OUT "mirv!<>$date\n";
close(OUT);
これをulahana301/public_html/においといて
root権限で動かしてみる(^_^;)
#!/usr/bin/perl -w
print "Content-type: text/plain\n\n";
print "<a href=\"http://tmp7.2ch.net/mirv_suteki.log\">http://tmp7.2ch.net/mirv_suteki.log</a>";
@wdays = ( "日", "月", "火", "水", "木", "金", "土", "日" );
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year + 1900, $mon + 1, $mday, $wdays[$wday],$hour, $min, $sec);
open(OUT, ">>/home/ch2tmp7/public_html/mirv_suteki.log");
print OUT "mirv!<>$date\n";
close(OUT);
これをulahana301/public_html/においといて
root権限で動かしてみる(^_^;)
つことで・・・・(^_^;)前スレの
p1 外から呼ばれたら、自分のアカウントに起動トリガになるファイルを一個生成する(ulahana301の実行ファイル)
p2 root権限で毎分ごとに起動トリガファイルの有無を調べる(rootの実行ファイル)
もし起動トリガファイルがあれば
起動トリガファイルを削除して、p3を実行する
さもなくば終了する
p3 root権限でp2によって起動する、お掃除プログラム本体(rootの実行ファイル)
p3が完成したと言っても過言ではない(^_^;)はず
p1 外から呼ばれたら、自分のアカウントに起動トリガになるファイルを一個生成する(ulahana301の実行ファイル)
p2 root権限で毎分ごとに起動トリガファイルの有無を調べる(rootの実行ファイル)
もし起動トリガファイルがあれば
起動トリガファイルを削除して、p3を実行する
さもなくば終了する
p3 root権限でp2によって起動する、お掃除プログラム本体(rootの実行ファイル)
p3が完成したと言っても過言ではない(^_^;)はず
でもってp1はa.cgiでええやん(^_^;)と
あとはp2を作って定期的に動かす・・・
あとはp2を作って定期的に動かす・・・
つことでp2を作ってみる(^_^;)
2008/10/24(金) 15:44:53ID:JGievMm90
>>23
時間は現地時間でいいのかな?
時間は現地時間でいいのかな?
2008/10/24(金) 15:45:59ID:vMVWqA7m0
>>25
定期的に動かすのは前スレで出てたdaemontoolsのsvcなんちゃらだぬ
定期的に動かすのは前スレで出てたdaemontoolsのsvcなんちゃらだぬ
p2がやること
1) トリガファイルがあるかどうかしらべる
2) トリガファイルがあれば
トリガファイルを削除する
p3を起動する
3) 終わり
1) トリガファイルがあるかどうかしらべる
2) トリガファイルがあれば
トリガファイルを削除する
p3を起動する
3) 終わり
>28
ほうほう(^_^;)そこでdaemontoolsが出てくるのか!
まずは手動で動くものを作るー
ほうほう(^_^;)そこでdaemontoolsが出てくるのか!
まずは手動で動くものを作るー
3128
2008/10/24(金) 16:04:43ID:vMVWqA7m0 ごめ、ちょっと違うかも
daemontools
ttp://www.emaillab.org/djb/tools/daemontools/top.html
superviseは指定したプログラムを起動・監視・終了とかさせるものらしい
daemon化させるためのツールですな
そのなかにこんなの発見 使えそうな予感
The setuidgid program
ttp://www.emaillab.org/djb/tools/daemontools/setuidgid.html
> setuidgid は明記されたアカウントの uid と gid で別のプログラムを起動します。
rootから子プロセスを指定されたアカウントで実行するものらすい
> setuidgid は root 以外では動かせません。
daemontools
ttp://www.emaillab.org/djb/tools/daemontools/top.html
superviseは指定したプログラムを起動・監視・終了とかさせるものらしい
daemon化させるためのツールですな
そのなかにこんなの発見 使えそうな予感
The setuidgid program
ttp://www.emaillab.org/djb/tools/daemontools/setuidgid.html
> setuidgid は明記されたアカウントの uid と gid で別のプログラムを起動します。
rootから子プロセスを指定されたアカウントで実行するものらすい
> setuidgid は root 以外では動かせません。
2008/10/24(金) 16:09:04ID:JGievMm90
2008/10/24(金) 16:10:14ID:JGievMm90
× 18 ○ >>13
2008/10/24(金) 16:21:43ID:JGievMm90
>>31
前スレでも書いたけど、それ使うなら
スーパーバイザー→指令→親プロセスA(起動時以降はデーモン)→チャイルドB1,B2...生成→.....
の流れだと思うんだけど、
httpdからのチャイルド生成を目指している(?)ようなので、どうかなあ。
前スレでも書いたけど、それ使うなら
スーパーバイザー→指令→親プロセスA(起動時以降はデーモン)→チャイルドB1,B2...生成→.....
の流れだと思うんだけど、
httpdからのチャイルド生成を目指している(?)ようなので、どうかなあ。
2008/10/24(金) 16:28:52ID:vMVWqA7m0
2008/10/24(金) 16:41:04ID:JGievMm90
38ピロリ
2008/10/24(金) 16:47:13ID:6Yk/gpUK0 テストだけならいいような気もするけど
テスト用のアカウントを作ればいいでしょ
テスト用のアカウントを作ればいいでしょ
39ピロリ
2008/10/24(金) 17:00:10ID:6Yk/gpUK0 1)の起動時に行われる作業
1-a)
全てのアカウントに対して行う。
制御用アカウントに
public_html/.htaccess
public_html/test/.htaccess
public_html/test/read.cgi 等 (*.so offlaw* read.cgi)
を用意しておく
/md/tmp/public_html に全てをコピー
全てのアカウントの以上のファイルを消去
シンボリックリンクにする
例) public_html/test/read,cgi -> /md/tmp/public_html/test/read.cgi
懸念は広告ファイルはどうなるか・・・
同じ場所に入れなきゃだよなぁ、たぶん
過去ログ倉庫用の広告ファイル(中身は好きに作ってネ)も
/md/tmp/public_html 配下にネ
1-b)
全てのアカウントに対して行う。
アカウント配下のすべての板に対して行う。
public_html/siberia/i/ をディレクトリごとしょうきょ(rm -rf siberia/i/)
/md/ch2xxxx/siberia/i/ を作成
んでシンボリックリンク
public_html/siberia/i/ -> /md/ch2xxxx/siberia/i/
懸念は、mdの容量問題っすね
これで1)は完成
2) は /md/ch2xxxx/siberia/i/ の中の古いファイル(N日たったファイル)を消す
ただし 呼ばれたら 一アカウントの一板のを消すだけ、次に呼ばれたら
その次をやる、呼ばれるのは M分おき。
1-a)
全てのアカウントに対して行う。
制御用アカウントに
public_html/.htaccess
public_html/test/.htaccess
public_html/test/read.cgi 等 (*.so offlaw* read.cgi)
を用意しておく
/md/tmp/public_html に全てをコピー
全てのアカウントの以上のファイルを消去
シンボリックリンクにする
例) public_html/test/read,cgi -> /md/tmp/public_html/test/read.cgi
懸念は広告ファイルはどうなるか・・・
同じ場所に入れなきゃだよなぁ、たぶん
過去ログ倉庫用の広告ファイル(中身は好きに作ってネ)も
/md/tmp/public_html 配下にネ
1-b)
全てのアカウントに対して行う。
アカウント配下のすべての板に対して行う。
public_html/siberia/i/ をディレクトリごとしょうきょ(rm -rf siberia/i/)
/md/ch2xxxx/siberia/i/ を作成
んでシンボリックリンク
public_html/siberia/i/ -> /md/ch2xxxx/siberia/i/
懸念は、mdの容量問題っすね
これで1)は完成
2) は /md/ch2xxxx/siberia/i/ の中の古いファイル(N日たったファイル)を消す
ただし 呼ばれたら 一アカウントの一板のを消すだけ、次に呼ばれたら
その次をやる、呼ばれるのは M分おき。
2008/10/24(金) 17:07:35ID:JGievMm90
42ピロリ
2008/10/24(金) 17:11:25ID:6Yk/gpUK0 んだんだ
ぅぃぅぃ(^_^;)了解
書きだすのは実験用のアカウント作って検証する。
書きだすのは実験用のアカウント作って検証する。
あーなるほど、まとめる訳か。
45ピロリ
2008/10/24(金) 17:14:29ID:6Yk/gpUK0 アパッチのログもまとめたいが
それは次ですな、
それは次ですな、
>39
1)は/etc/rc.localから起動しよう(^_^;)そうしよう
1)は/etc/rc.localから起動しよう(^_^;)そうしよう
2008/10/24(金) 17:19:15ID:JGievMm90
Apacheの各種logをまとめちゃうと、容量が怖くなってくる気がする
(現状知らないけど)
(現状知らないけど)
んで2)の仕組みは、もっといい方法が見つかるまでは
>24の方式でやることにしよう(^_^;)
>24の方式でやることにしよう(^_^;)
制御用アカウントに
public_html/.htaccess
public_html/test/.htaccess
public_html/test/read.cgi 等 (*.so offlaw* read.cgi)
を用意しておく
これをやっておこう(^_^;)aiai.tarを解凍する
public_html/.htaccess
public_html/test/.htaccess
public_html/test/read.cgi 等 (*.so offlaw* read.cgi)
を用意しておく
これをやっておこう(^_^;)aiai.tarを解凍する
んじゃいよいよプログラムです(^_^;)
まず最初に、全てのアカウントに対して作業を行う・・・・んだから
全てのアカウントのリストがほしい・・・・
配列っつーんだっけ?(^_^;)それに入れとけば
何度でもそのリストを元に作業ができるんだよね?
まず最初に、全てのアカウントに対して作業を行う・・・・んだから
全てのアカウントのリストがほしい・・・・
配列っつーんだっけ?(^_^;)それに入れとけば
何度でもそのリストを元に作業ができるんだよね?
で、アカウントのリストは、ls -1 /md/ch2*で取得できるはず(^_^;)
2008/10/24(金) 18:11:36ID:JGievMm90
2008/10/24(金) 18:12:05ID:gtuOGIns0
>>50
プログラム中に埋め込むの?テキストとして別で保存しとく?
リダイレクトでテキストに出して、それを読み込むの方が簡単かも。
$a 変数。 $a = "マァヴ";
@data 配列。各要素へのアクセスは $data[0] , $data[1] ,$data[2], ・・・
@data = ( "マァヴ1号" , "マァヴ2号" , "マァヴ3号");
$data[0] の中身は "マァヴ1号" になる。
プログラム中に埋め込むの?テキストとして別で保存しとく?
リダイレクトでテキストに出して、それを読み込むの方が簡単かも。
$a 変数。 $a = "マァヴ";
@data 配列。各要素へのアクセスは $data[0] , $data[1] ,$data[2], ・・・
@data = ( "マァヴ1号" , "マァヴ2号" , "マァヴ3号");
$data[0] の中身は "マァヴ1号" になる。
2008/10/24(金) 18:12:41ID:JGievMm90
あくまで例えの変数名ですので。
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(md);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
for $TgtServer (@ServerList) {
print "$TgtServer\n;"
}
これで、/mdにあるディレクトリのリストが表示されても不思議はない(^_^;)はず
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(md);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
for $TgtServer (@ServerList) {
print "$TgtServer\n;"
}
これで、/mdにあるディレクトリのリストが表示されても不思議はない(^_^;)はず
56ピロリ
2008/10/24(金) 18:18:02ID:6Yk/gpUK0 <^_^;>
>52
ぅぃぅぃ(^_^;)それが活躍しそうなところに来たら
「今だ」と指摘よろしく〜
なんせ、初めてのperlっつーかプログラムな状況ですぜ〜
>50
環境依存ではあるけど、/mdのch2で始まるディレクトリが
サーバのリストになるので、起動時に取得する方向で考えてます(^_^;)
ぅぃぅぃ(^_^;)それが活躍しそうなところに来たら
「今だ」と指摘よろしく〜
なんせ、初めてのperlっつーかプログラムな状況ですぜ〜
>50
環境依存ではあるけど、/mdのch2で始まるディレクトリが
サーバのリストになるので、起動時に取得する方向で考えてます(^_^;)
58※
2008/10/24(金) 18:19:34ID:gtuOGIns0 がーん><
closedir(md);
↓
closedir(MD);
closedir(md);
↓
closedir(MD);
2008/10/24(金) 18:21:36ID:JGievMm90
for $TgtServer (@ServerList) {
$TgtServerには何が入っていますか?
初期化しましたか?
$TgtServerには何が入っていますか?
初期化しましたか?
>55
わずかこれだけのプログラムで19行ものエラーを吐かれたよ(^_^;)
わずかこれだけのプログラムで19行ものエラーを吐かれたよ(^_^;)
>59
初期化?(^_^;)ってどうやるの?
初期化?(^_^;)ってどうやるの?
>58
おお(^_^;)直した
おお(^_^;)直した
63※
2008/10/24(金) 18:26:06ID:gtuOGIns0 >>57
なるほろほろ
んじゃch2以外のものもある場合は
print "$TgtServer\n;"
の部分を
if ( $TgtServer =~ /^ch2/) print "$TgtServer\n;"
とするといいかも。
ch2しかないなら不要です。
あと for じゃなくて foreach ね。
なるほろほろ
んじゃch2以外のものもある場合は
print "$TgtServer\n;"
の部分を
if ( $TgtServer =~ /^ch2/) print "$TgtServer\n;"
とするといいかも。
ch2しかないなら不要です。
あと for じゃなくて foreach ね。
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
for $TgtServer (@ServerList) {
print "$TgtServer\n;"
}
>63
これが動いたらやってみる(^_^;)
まずはここまでを動かしたい〜
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
for $TgtServer (@ServerList) {
print "$TgtServer\n;"
}
>63
これが動いたらやってみる(^_^;)
まずはここまでを動かしたい〜
2008/10/24(金) 18:29:05ID:JGievMm90
>>60
@ServerList には”.”、”..”を含めたリストが入っていると思います。
で、$TgtServer には、何を入れたいかがわかりません。
もし、@ServerList の上から順に入れてfor文を回すのなら、完全に間違いです。
@ServerList には”.”、”..”を含めたリストが入っていると思います。
で、$TgtServer には、何を入れたいかがわかりません。
もし、@ServerList の上から順に入れてfor文を回すのなら、完全に間違いです。
66※
2008/10/24(金) 18:31:02ID:gtuOGIns0 >>64
いや、これはやって。
↓
for じゃなくて foreach。
forだと構文エラーです。
foreach $TgtServer (@ServerList) {
いや、これはやって。
↓
for じゃなくて foreach。
forだと構文エラーです。
foreach $TgtServer (@ServerList) {
>65
えーっと(^_^;)
>@ServerList には”.”、”..”を含めたリストが入っていると思います。
はい(^_^;)入っていても不思議はないです。
>で、$TgtServer には、何を入れたいかがわかりません。
$TgtServerには、@ServerListの最初から1つずつ
要素を入れたいわけです(^_^;)
具体的には
@ServerListに/mdのファイルリストが入っているので
そこから$TgtServerに1つ取り出しては、printする・・・・と(^_^;)
えーっと(^_^;)
>@ServerList には”.”、”..”を含めたリストが入っていると思います。
はい(^_^;)入っていても不思議はないです。
>で、$TgtServer には、何を入れたいかがわかりません。
$TgtServerには、@ServerListの最初から1つずつ
要素を入れたいわけです(^_^;)
具体的には
@ServerListに/mdのファイルリストが入っているので
そこから$TgtServerに1つ取り出しては、printする・・・・と(^_^;)
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
としてみた(^_^;)
#アカウントリストを作る
opendir(MD, /md);
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
としてみた(^_^;)
>68(^_^;)
エラーは19行から22行に増えてます(^_^;)
Possible unintended interpolation of @ServerList in string at ./dotabata.cgi line 4.
Bareword found where operator expected at ./dotabata.cgi line 9, near "print "Content-type: text/html"
(Might be a runaway multi-line // string starting on line 4)
(Do you need to predeclare print?)
Unquoted string "html" may clash with future reserved word at ./dotabata.cgi line 9.
Backslash found where operator expected at ./dotabata.cgi line 9, near "html\"
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 9.
Backslash found where operator expected at ./dotabata.cgi line 9, near "n\"
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 9.
String found where operator expected at ./dotabata.cgi line 12, near "print (""
(Might be a runaway multi-line "" string starting on line 9)
(Missing semicolon on previous line?)
Scalar found where operator expected at ./dotabata.cgi line 12, near "print ("$TgtServer"
(Do you need to predeclare print?)
Backslash found where operator expected at ./dotabata.cgi line 12, near "$TgtServer\"
(Missing operator before \?)
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 12.
String found where operator expected at ./dotabata.cgi line 12, at end of line
(Missing semicolon on previous line?)
syntax error at ./dotabata.cgi line 9, near "print "Content-type: text/html"
Can't find string terminator '"' anywhere before EOF at ./dotabata.cgi line 12.
ulahana301@banana3174:~/public_html$ cat ./dotabata.cgi
Possible unintended interpolation of @ServerList in string at ./dotabata.cgi line 4.
Bareword found where operator expected at ./dotabata.cgi line 9, near "print "Content-type: text/html"
(Might be a runaway multi-line // string starting on line 4)
(Do you need to predeclare print?)
Unquoted string "html" may clash with future reserved word at ./dotabata.cgi line 9.
Backslash found where operator expected at ./dotabata.cgi line 9, near "html\"
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 9.
Backslash found where operator expected at ./dotabata.cgi line 9, near "n\"
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 9.
String found where operator expected at ./dotabata.cgi line 12, near "print (""
(Might be a runaway multi-line "" string starting on line 9)
(Missing semicolon on previous line?)
Scalar found where operator expected at ./dotabata.cgi line 12, near "print ("$TgtServer"
(Do you need to predeclare print?)
Backslash found where operator expected at ./dotabata.cgi line 12, near "$TgtServer\"
(Missing operator before \?)
Unquoted string "n" may clash with future reserved word at ./dotabata.cgi line 12.
String found where operator expected at ./dotabata.cgi line 12, at end of line
(Missing semicolon on previous line?)
syntax error at ./dotabata.cgi line 9, near "print "Content-type: text/html"
Can't find string terminator '"' anywhere before EOF at ./dotabata.cgi line 12.
ulahana301@banana3174:~/public_html$ cat ./dotabata.cgi
こ、こうか?(^_^;)
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
できたー(^_^;)っhttp://hana301.ula.cc/dotabata.cgi
原因はdiropenするときのディレクトリを""でかこってなかった・・・・でした(^_^;)
原因はdiropenするときのディレクトリを""でかこってなかった・・・・でした(^_^;)
>63を入れてみる(^_^;)
;の場所注意
;の場所注意
75※
2008/10/24(金) 18:47:56ID:gtuOGIns0 ♪♪♪
んで、一応書いておこう。
>@ServerList には”.”、”..”を含めたリストが入っていると思います。
ってことなので
ch2以外のディレクトリが存在するなら
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) { print "$TgtServer\n"; }
}
存在しないなら
foreach $TgtServer (@ServerList) {
if($TgtServer eq "."){ next; }
if($TgtServer eq ".."){ next; }
print "$TgtServer\n";
}
# $TgtServer = 0;はいらないですー
>>73
見れないけどうまく行ったのかな?
http://qb6.2ch.net/_500/
ここに飛ばされる
んで、一応書いておこう。
>@ServerList には”.”、”..”を含めたリストが入っていると思います。
ってことなので
ch2以外のディレクトリが存在するなら
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) { print "$TgtServer\n"; }
}
存在しないなら
foreach $TgtServer (@ServerList) {
if($TgtServer eq "."){ next; }
if($TgtServer eq ".."){ next; }
print "$TgtServer\n";
}
# $TgtServer = 0;はいらないですー
>>73
見れないけどうまく行ったのかな?
http://qb6.2ch.net/_500/
ここに飛ばされる
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
動いた(^_^;)っhttp://hana301.ula.cc/dotabata.cgi
#アカウントリストを作る
opendir(MD,"/md");
@ServerList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$TgtServer = 0;
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
動いた(^_^;)っhttp://hana301.ula.cc/dotabata.cgi
んじゃこれを再度配列に入れる・・・・と(^_^;)
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
@ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
こんな感じでどうだろう?(^_^;)
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
@ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
こんな感じでどうだろう?(^_^;)
配列の場所って、0から始まるの?(^_^;)それとも1から始まるの?
2008/10/24(金) 19:00:01ID:JGievMm90
@jx = split(/\n/, $TgtServer);
でいけるとおもうけど。
perlスクリプトは0から始まります
でいけるとおもうけど。
perlスクリプトは0から始まります
あれ?(^_^;)おいらはなんかわかってない(当然だけど)のかな?
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
と言われた。
@ServerList[$num]と$ServerList[$num]は同じものを指してるのか?(^_^;)
つか、出力見たら$ServerList[$num]にどんどん入れていくと
@ServerListの配列に入ってるわけだが(^_^;)
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
と言われた。
@ServerList[$num]と$ServerList[$num]は同じものを指してるのか?(^_^;)
つか、出力見たら$ServerList[$num]にどんどん入れていくと
@ServerListの配列に入ってるわけだが(^_^;)
>80
えーっとここでは(^_^;)$TgtServerには1個しか要素がなくて
それはたとえばこの場合 ch2tmp7 とかってのじゃないの?(^_^;)
えーっとここでは(^_^;)$TgtServerには1個しか要素がなくて
それはたとえばこの場合 ch2tmp7 とかってのじゃないの?(^_^;)
@ServerListに再度いれるなら初期化しないと遺憾のじゃね?
>83
あ、最初に入れる配列は@DirListという名前に変えました(^_^;)
$TgtServerは再利用するけど、いきなり代入されるんでいいかなーとか。
あ、最初に入れる配列は@DirListという名前に変えました(^_^;)
$TgtServerは再利用するけど、いきなり代入されるんでいいかなーとか。
2008/10/24(金) 19:10:10ID:JGievMm90
なにはともあれ、perlさんが
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
って言ってるので、そのように書きなおす(^_^;)
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
って言ってるので、そのように書きなおす(^_^;)
@ServerList[$num] = $TgtServer;
これか?
$ServerList[$num] = $TgtServer;
これか?
$ServerList[$num] = $TgtServer;
>85
あれ?(^_^;)そういうことになるの?>@TgtServerの中身
あれ?(^_^;)そういうことになるの?>@TgtServerの中身
>87
それ(^_^;)
それ(^_^;)
90※
2008/10/24(金) 19:15:20ID:EIWLfPdx0 >>76
見れた♪
んで、配列から特定の要素を取り出して再度配列にするならgrep使うといいよ。
たぶん使えるはず。
# @DirList リスト内で ch2 から始まるものを @TgtServerリストに入れる
@TgtServer = grep( !/^ch2/, @DirList );
で、↓な感じで
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
@ServerList = grep( !/^ch2/, @DirList );
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
# 実は私も手探りな感じ。
見れた♪
んで、配列から特定の要素を取り出して再度配列にするならgrep使うといいよ。
たぶん使えるはず。
# @DirList リスト内で ch2 から始まるものを @TgtServerリストに入れる
@TgtServer = grep( !/^ch2/, @DirList );
で、↓な感じで
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
@ServerList = grep( !/^ch2/, @DirList );
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
foreach $TgtServer (@ServerList) {
print ("$TgtServer\n");
}
# 実は私も手探りな感じ。
foreach $TgtServer (@DirList) {
処理;
}
って、@DirListの中身の1要素を$TgtServerに入れて
処理を済ませたら
@DirListの中身の次の1要素を$TgtServerに入れて
処理を済ませたら
:
とやって、@DirListの要素がなくなったらforeach()を抜ける・・・・んでないの?(^_^;)
処理;
}
って、@DirListの中身の1要素を$TgtServerに入れて
処理を済ませたら
@DirListの中身の次の1要素を$TgtServerに入れて
処理を済ませたら
:
とやって、@DirListの要素がなくなったらforeach()を抜ける・・・・んでないの?(^_^;)
2008/10/24(金) 19:16:52ID:6Yk/gpUK0
$_
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
$ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
かな?
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
$ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
かな?
#!/usr/bin/perl -w
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
$ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
これでワーニングも出なくなった(^_^;)
@ServerListにアカウントのリストが出来上がった〜
はず(^_^;)
#アカウントリストを作る
opendir(MD,"/md");
@DirList = readdir(MD);
closedir(MD);
#できあがったリストを確認のため出力
print "Content-type: text/html\n\n";
$num = 0;
foreach $TgtServer (@DirList) {
if ( $TgtServer =~ /^ch2/) {
$ServerList[$num] = $TgtServer;
$num ++;
}
}
foreach $TgtServer (@ServerList) {
if ( $TgtServer =~ /^ch2/) {
print ("$TgtServer\n");
}
}
これでワーニングも出なくなった(^_^;)
@ServerListにアカウントのリストが出来上がった〜
はず(^_^;)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 令和ロマン・高比良さん、とろサーモン・久保田さんを任意聴取 オンラインカジノ疑惑 久保田は否定、高比良は認める ★7 [Ailuropoda melanoleuca★]
- 【テレビ】フジ「オールナイトフジコ」3月末で終了 港前社長“肝いり案件”もスポンサーが難色 [湛然★]
- 自動車関税「4月2日ごろ」 工場回帰狙い―米大統領 [蚤の市★]
- 【SFC】『タクティクスオウガ』が今も色あせない名作である理由 「ゲームの選択肢とは思えない…」 [湛然★]
- 「足の裏の匂いがするこのスタジオ」ホラン千秋、ラーメンの残り香に不快感示し批判の声「失礼すぎ」「豚骨ラーメンに喧嘩売ってんの?」 [muffin★]
- 【国際】ノルウェーの養殖場からサーモン2万7000匹が大脱走、水産会社が逃亡サーモンに”賞金”を設定 1匹につき約7000円 [煮卵★]