X



花子 ★と花代 ★の秘密の花園4

■ このスレッドは過去ログ倉庫に格納されています
1マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 14:29:16ID:RrB8QqMmI?DIA(100888)
/ ̄ ̄ ̄ ̄ ̄\
| ・ 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/
2マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 14:34:07ID:RrB8QqMm0?DIA(100888)
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 の整備(これは何年かかるか・・・)

等々
3マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 14:35:35ID:RrB8QqMm0?DIA(100888)
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? 他でもいいけど、)を作る。
そして動かす(中身は起動されたら所定の位置にログを書き出すというだけ)。

二日もあれば出来るかな?
スクリプトはみんながここで教えると、
2008/10/24(金) 14:36:49ID:SZeMqOZt0


        ∧_∧   ________   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (  ´Д`)/ ̄/ ̄/ < ○○! ○○○○○○○○○○!
      ( 二二二つ / と)   \_________
      |    /  /  /
  __  |      ̄| ̄ ̄
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||             ||
5マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 14:38:29ID:RrB8QqMm0?DIA(100888)
つことで>2の(4が>3で進行中(^_^;)

命題
・定期的に外から呼ばれるお掃除プログラム
・アカウント横断的に作業する
・ユーザーアカウントの1つに設置されている

のアイデア絶賛募集中(^_^;)
6マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:12:19ID:RrB8QqMm0?DIA(100888)
#!/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);

これで(^_^;)
2008/10/24(金) 15:12:28ID:h7TPz9CUP?PLT(20001)
1000取ってしまた;
2008/10/24(金) 15:14:16ID:h7TPz9CUP?PLT(20001)
ファイル存在確認いらないんじゃね?いるんだっけ?
9マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:15:00ID:RrB8QqMm0?DIA(100888)
なんかうまく追記されてない(^_^;)
http://hana301.ula.cc/c.cgi
2008/10/24(金) 15:20:06ID:JGievMm90
>>9
print OUT "mirv!<>$date\n"; 

がないんじゃない?
2008/10/24(金) 15:20:19ID:vMVWqA7m0
DOSだと>>でファイルなければ作ってたけどうにも一緒じゃないの?
12マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:22:31ID:RrB8QqMm0?DIA(100888)
>10
!!!!!!!!!!!!!!!!(^_^;)orz
13マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:23:50ID:RrB8QqMm0?DIA(100888)
#!/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);


うまく動いたー(^_^;)
14マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:25:37ID:RrB8QqMm0?DIA(100888)
ということで、ログを書きだすことはできるようになったわけだ(^_^;)ぶふう
このログを/home/ch2tmp7/public_html/に書き出せれば勝ち
2008/10/24(金) 15:26:03ID:h7TPz9CUP?PLT(20001)
そだよねたしか。
ファイル無ければ作成、あれば追記なはずー
16マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:28:40ID:RrB8QqMm0?DIA(100888)
で、アカウント横断の計略としては(^_^;)
a) root権限で実行する
b) Suexecを使う
c) なんか他の方法考える

で、b)はとりあえず行き詰った(^_^;)のでa)を試そう
つまり・・・・root権限で実行してしまうのだった。
うまく書けるかな?
17マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:29:23ID:RrB8QqMm0?DIA(100888)
>15
あ(^_^;)
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.
2008/10/24(金) 15:32:19ID:h7TPz9CUP?PLT(20001)
>>11
頑張って口説きました

脱がせました

服を着せました

なんて紳士的w
2008/10/24(金) 15:34:44ID:h7TPz9CUP?PLT(20001)
>>10だった;
21マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:35:53ID:RrB8QqMm0?DIA(100888)
#!/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);

これで動いた(^_^;)
22マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:37:23ID:RrB8QqMm0?DIA(100888)
さて、こういうものを作ってみた(^_^;)

#!/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権限で動かしてみる(^_^;)
23マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:40:21ID:RrB8QqMm0?DIA(100888)
http://tmp7.2ch.net/mirv_suteki.log

できたできた(^_^;)
24マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:41:45ID:RrB8QqMm0?DIA(100888)
つことで・・・・(^_^;)前スレの

p1 外から呼ばれたら、自分のアカウントに起動トリガになるファイルを一個生成する(ulahana301の実行ファイル)
p2 root権限で毎分ごとに起動トリガファイルの有無を調べる(rootの実行ファイル)
 もし起動トリガファイルがあれば
  起動トリガファイルを削除して、p3を実行する
 さもなくば終了する
p3 root権限でp2によって起動する、お掃除プログラム本体(rootの実行ファイル)


p3が完成したと言っても過言ではない(^_^;)はず
25マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:42:25ID:RrB8QqMm0?DIA(100888)
でもってp1はa.cgiでええやん(^_^;)と
あとはp2を作って定期的に動かす・・・
26マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:44:48ID:RrB8QqMm0?DIA(100888)
つことでp2を作ってみる(^_^;)
2008/10/24(金) 15:44:53ID:JGievMm90
>>23
時間は現地時間でいいのかな?
2008/10/24(金) 15:45:59ID:vMVWqA7m0
>>25
定期的に動かすのは前スレで出てたdaemontoolsのsvcなんちゃらだぬ
29マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:46:11ID:RrB8QqMm0?DIA(100888)
p2がやること
1) トリガファイルがあるかどうかしらべる
2) トリガファイルがあれば
   トリガファイルを削除する
   p3を起動する
3) 終わり
30マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 15:46:53ID:RrB8QqMm0?DIA(100888)
>28
ほうほう(^_^;)そこで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 以外では動かせません。
2008/10/24(金) 16:09:04ID:JGievMm90
>>29
>>18でやった事の応用で済むね。
2008/10/24(金) 16:10:14ID:JGievMm90
× 18  ○ >>13
2008/10/24(金) 16:21:43ID:JGievMm90
>>31
前スレでも書いたけど、それ使うなら
スーパーバイザー→指令→親プロセスA(起動時以降はデーモン)→チャイルドB1,B2...生成→.....
の流れだと思うんだけど、
httpdからのチャイルド生成を目指している(?)ようなので、どうかなあ。
2008/10/24(金) 16:28:52ID:vMVWqA7m0
>>34
>>24を見るかぎり、p2をroot権限でdaemon化しておいてp3を起動するのにsetuidgidが使えるんじゃないかと思ったんだけど
p1はトリガファイル作る程度だからroot権限なんていらないし
2008/10/24(金) 16:41:04ID:JGievMm90
>>35
・前スレ>>990-991で、書かれてた事、
・今回ファイルに書き込めたのはroot権限で動作させた(p1の動作です)

を見ると、どうなのかな? と思ったのですよ。


37ピロリ
垢版 |
2008/10/24(金) 16:46:25ID:6Yk/gpUK0
>>23
各アカウントには書き出さないでくれ〜
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分おき。
40ピロリ
垢版 |
2008/10/24(金) 17:01:13ID:6Yk/gpUK0
>>37
>>38
のように今回作るスクリプトでは各アカウントに書き込みはご法度。
2008/10/24(金) 17:07:35ID:JGievMm90
>>40
要は、
・収集は各アカウントの情報
・収集した情報は、収集用の専用アカウントに書き込む

と言う事?
42ピロリ
垢版 |
2008/10/24(金) 17:11:25ID:6Yk/gpUK0
んだんだ
43マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:12:22ID:RrB8QqMm0?DIA(100888)
ぅぃぅぃ(^_^;)了解
書きだすのは実験用のアカウント作って検証する。
2008/10/24(金) 17:12:34ID:h7TPz9CUP?PLT(20001)
あーなるほど、まとめる訳か。
45ピロリ
垢版 |
2008/10/24(金) 17:14:29ID:6Yk/gpUK0
アパッチのログもまとめたいが
それは次ですな、
46マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:18:46ID:RrB8QqMm0?DIA(100888)
>39
1)は/etc/rc.localから起動しよう(^_^;)そうしよう
2008/10/24(金) 17:19:15ID:JGievMm90
Apacheの各種logをまとめちゃうと、容量が怖くなってくる気がする
(現状知らないけど)
48マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:23:20ID:RrB8QqMm0?DIA(100888)
んで2)の仕組みは、もっといい方法が見つかるまでは
>24の方式でやることにしよう(^_^;)
49マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:40:00ID:RrB8QqMm0?DIA(100888)
制御用アカウントに  
public_html/.htaccess
public_html/test/.htaccess
public_html/test/read.cgi 等 (*.so offlaw* read.cgi)
を用意しておく

これをやっておこう(^_^;)aiai.tarを解凍する
50マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:47:32ID:RrB8QqMm0?DIA(100888)
んじゃいよいよプログラムです(^_^;)
まず最初に、全てのアカウントに対して作業を行う・・・・んだから
全てのアカウントのリストがほしい・・・・
配列っつーんだっけ?(^_^;)それに入れとけば
何度でもそのリストを元に作業ができるんだよね?
51マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 17:55:55ID:RrB8QqMm0?DIA(100888)
で、アカウントのリストは、ls -1 /md/ch2*で取得できるはず(^_^;)
2008/10/24(金) 18:11:36ID:JGievMm90
>>50
急ぎ作業ではないなら、
@dog、$cat、$cat[esa]、$cat[esa][karikari] 等
ポインタと呼ばれる事を今のうちに覚えたほうが今後楽になるかもしれません。
2008/10/24(金) 18:12:05ID:gtuOGIns0
>>50
プログラム中に埋め込むの?テキストとして別で保存しとく?

リダイレクトでテキストに出して、それを読み込むの方が簡単かも。

$a 変数。 $a = "マァヴ";
@data 配列。各要素へのアクセスは $data[0] , $data[1] ,$data[2], ・・・
@data = ( "マァヴ1号" , "マァヴ2号" , "マァヴ3号");
$data[0] の中身は "マァヴ1号" になる。
2008/10/24(金) 18:12:41ID:JGievMm90
あくまで例えの変数名ですので。
55マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:16:14ID:RrB8QqMm0?DIA(100888)
#!/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にあるディレクトリのリストが表示されても不思議はない(^_^;)はず
56ピロリ
垢版 |
2008/10/24(金) 18:18:02ID:6Yk/gpUK0
<^_^;>
57マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:19:05ID:RrB8QqMm0?DIA(100888)
>52
ぅぃぅぃ(^_^;)それが活躍しそうなところに来たら
「今だ」と指摘よろしく〜

なんせ、初めてのperlっつーかプログラムな状況ですぜ〜

>50
環境依存ではあるけど、/mdのch2で始まるディレクトリが
サーバのリストになるので、起動時に取得する方向で考えてます(^_^;)
58
垢版 |
2008/10/24(金) 18:19:34ID:gtuOGIns0
がーん><

closedir(md);

  ↓

closedir(MD);
2008/10/24(金) 18:21:36ID:JGievMm90
for $TgtServer (@ServerList) { 

$TgtServerには何が入っていますか?
初期化しましたか?
60マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:23:29ID:RrB8QqMm0?DIA(100888)
>55
わずかこれだけのプログラムで19行ものエラーを吐かれたよ(^_^;)
61マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:24:44ID:RrB8QqMm0?DIA(100888)
>59
初期化?(^_^;)ってどうやるの?
62マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:25:13ID:RrB8QqMm0?DIA(100888)
>58
おお(^_^;)直した
63
垢版 |
2008/10/24(金) 18:26:06ID:gtuOGIns0
>>57
なるほろほろ

んじゃch2以外のものもある場合は

print "$TgtServer\n;"
の部分を

if ( $TgtServer =~ /^ch2/) print "$TgtServer\n;"

とするといいかも。

ch2しかないなら不要です。


あと for じゃなくて foreach ね。
64マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:27:59ID:RrB8QqMm0?DIA(100888)
#!/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
これが動いたらやってみる(^_^;)
まずはここまでを動かしたい〜
2008/10/24(金) 18:29:05ID:JGievMm90
>>60
@ServerList には”.”、”..”を含めたリストが入っていると思います。
で、$TgtServer には、何を入れたいかがわかりません。

もし、@ServerList の上から順に入れてfor文を回すのなら、完全に間違いです。
66
垢版 |
2008/10/24(金) 18:31:02ID:gtuOGIns0
>>64
いや、これはやって。
  ↓
for じゃなくて foreach。

forだと構文エラーです。

foreach $TgtServer (@ServerList) {
67マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:34:19ID:RrB8QqMm0?DIA(100888)
>65
えーっと(^_^;)
>@ServerList には”.”、”..”を含めたリストが入っていると思います。
はい(^_^;)入っていても不思議はないです。

>で、$TgtServer には、何を入れたいかがわかりません。
$TgtServerには、@ServerListの最初から1つずつ
要素を入れたいわけです(^_^;)
具体的には
@ServerListに/mdのファイルリストが入っているので
そこから$TgtServerに1つ取り出しては、printする・・・・と(^_^;)
68
垢版 |
2008/10/24(金) 18:35:51ID:gtuOGIns0
>>67
>print "$TgtServer\n;"

行末の ; の位置が・・・。
69マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:36:37ID:RrB8QqMm0?DIA(100888)
#!/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");
}

としてみた(^_^;)
70マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:37:02ID:RrB8QqMm0?DIA(100888)
>68(^_^;)
71マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:38:46ID:RrB8QqMm0?DIA(100888)
エラーは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
72マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:41:41ID:RrB8QqMm0?DIA(100888)
こ、こうか?(^_^;)

#!/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");
}
73マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:43:21ID:RrB8QqMm0?DIA(100888)
できたー(^_^;)っhttp://hana301.ula.cc/dotabata.cgi
原因はdiropenするときのディレクトリを""でかこってなかった・・・・でした(^_^;)
74マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:45:44ID:RrB8QqMm0?DIA(100888)
>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/
ここに飛ばされる
76マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:51:33ID:RrB8QqMm0?DIA(100888)
#!/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
77マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:53:03ID:RrB8QqMm0?DIA(100888)
んじゃこれを再度配列に入れる・・・・と(^_^;)
78マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:57:30ID:RrB8QqMm0?DIA(100888)
#!/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");
}
}

こんな感じでどうだろう?(^_^;)
79マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 18:58:09ID:RrB8QqMm0?DIA(100888)
配列の場所って、0から始まるの?(^_^;)それとも1から始まるの?
2008/10/24(金) 19:00:01ID:JGievMm90
@jx = split(/\n/, $TgtServer);

でいけるとおもうけど。

perlスクリプトは0から始まります
81マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:01:12ID:RrB8QqMm0?DIA(100888)
あれ?(^_^;)おいらはなんかわかってない(当然だけど)のかな?
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
と言われた。
@ServerList[$num]と$ServerList[$num]は同じものを指してるのか?(^_^;)
つか、出力見たら$ServerList[$num]にどんどん入れていくと
@ServerListの配列に入ってるわけだが(^_^;)
82マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:05:37ID:RrB8QqMm0?DIA(100888)
>80
えーっとここでは(^_^;)$TgtServerには1個しか要素がなくて
それはたとえばこの場合 ch2tmp7 とかってのじゃないの?(^_^;)
2008/10/24(金) 19:06:14ID:h7TPz9CUP?PLT(20001)
@ServerListに再度いれるなら初期化しないと遺憾のじゃね?
84マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:07:41ID:RrB8QqMm0?DIA(100888)
>83
あ、最初に入れる配列は@DirListという名前に変えました(^_^;)
$TgtServerは再利用するけど、いきなり代入されるんでいいかなーとか。
2008/10/24(金) 19:10:10ID:JGievMm90
>>82
foreachで@ServerListの内容をベタで $TgtServerに入れ込んだわけですよね。\nも含めて。

>>80の意味は、@jxに $TgtServerのを\n除いて配列に格納すると言う意味。
86マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:11:05ID:RrB8QqMm0?DIA(100888)
なにはともあれ、perlさんが
Scalar value @ServerList[$num] better written as $ServerList[$num] at ./dotabata.cgi line 13.
って言ってるので、そのように書きなおす(^_^;)
2008/10/24(金) 19:11:22ID:h7TPz9CUP?PLT(20001)
@ServerList[$num] = $TgtServer;
これか?

$ServerList[$num] = $TgtServer;
88マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:12:21ID:RrB8QqMm0?DIA(100888)
>85
あれ?(^_^;)そういうことになるの?>@TgtServerの中身
89マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:12:41ID:RrB8QqMm0?DIA(100888)
>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");
}


# 実は私も手探りな感じ。
91マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:16:16ID:RrB8QqMm0?DIA(100888)
foreach $TgtServer (@DirList) {
処理;
}
って、@DirListの中身の1要素を$TgtServerに入れて
処理を済ませたら
@DirListの中身の次の1要素を$TgtServerに入れて
処理を済ませたら

とやって、@DirListの要素がなくなったらforeach()を抜ける・・・・んでないの?(^_^;)
2008/10/24(金) 19:16:52ID:6Yk/gpUK0
$_
2008/10/24(金) 19:17:45ID:h7TPz9CUP?PLT(20001)
#!/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");
}
}

かな?
94マァヴ ◆jxAYUMI09s
垢版 |
2008/10/24(金) 19:18:31ID:RrB8QqMm0?DIA(100888)
#!/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にアカウントのリストが出来上がった〜
はず(^_^;)
95
垢版 |
2008/10/24(金) 19:23:13ID:EIWLfPdx0
>>91
そうです。

>>94
パチパチパチパチ♪
のはず
■ このスレッドは過去ログ倉庫に格納されています