FTP status on Genkikko Server
EOH; /************ HTMLヘッダここまで **************/ $str = `ftpwho`; //FTPサーバの情報ゲト $str = explode("\n",$str); //行ごとに配列に格納 $pid = strrchr($str[0],"["); //1行目からメインプロセスのPID取得 $pid = substr($pid,1,strpos($pid,"]")-1); $uptime = strrchr($str[0],"up for"); //1行目からuptime取得 /**** 各プロセスの情報を2次配列に格納 ****/ for($i=1;$i<100;$i++){ if(eregi("Service class",$str[$i])){ //これが出たら最後の行 $users = explode(" ",$str[$i]); //スペースで分割して $n = sizeof($users); $users = "{$users[$n-2]} {$users[$n-1]}"; //最後の二つを取得。 break; //forループやめ。 }elseif($str[$i] == "no users connected"){ //これが出たらユーザなし。 $flag_table = false; //テーブル表示フラグ消して break; //fotループやめ。 } while(ereg(" ",$str[$i])){ $str[$i] = str_replace(" "," ",$str[$i]); //スペースの連続を取り除いて } $str[$i] = str_replace("[ ","[",$str[$i]); //接続時間の幅そろえのスペース除去 $str[$i] = str_replace("( ","(",$str[$i]); //パーセンテージの幅そろえの(略 $str[$i] = ltrim($str[$i]," "); //左端のスペース除去 $str[$i] = explode(" ",$str[$i]); //2次配列に分解 $str[$i][2] = ltrim($str[$i][2],"["); //余分な $str[$i][2] = rtrim($str[$i][2],"]"); //カッコを $str[$i][3] = ltrim($str[$i][3],"("); // 除 $str[$i][3] = rtrim($str[$i][3],")"); // 去 if($str[$i][4] == "idle"){ //アイドルのときは $str[$i][3] = "n/a"; //%を表示しない } } /******** BODYここから ********/ echo "proftpd main process $pid
\n", //PIDと "$uptime
\n"; //uptimeを表示 /**** TABLE表示ここから ****/ if($flag_table){ echo "online $users
\n", //接続ユーザ数を表示 "\n", " ", "\n"; //見出し。 for($j=1;$j<$i;$j++){ //ユーザ数分だけ繰り返し echo ""; for($k=0;$k<=5;$k++){ if($str[$j][$k]){ echo ""; }else{ echo ""; //空のセルはn/a入れる } } echo "\n"; } echo "
piduseruptime%cmdfile
{$str[$j][$k]}n/a
"; /**** TABLEここまで ****/ }else{ //table表示フラグ消えてるとき。 echo $str[$i]; } /************ HTMLフッタ出力 **************/ echo "
\nback\n", "\n\n"; ?>