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",
" pid | user | uptime | ",
"% | cmd | file |
\n"; //見出し。
for($j=1;$j<$i;$j++){ //ユーザ数分だけ繰り返し
echo "";
for($k=0;$k<=5;$k++){
if($str[$j][$k]){
echo "{$str[$j][$k]} | ";
}else{
echo "n/a | "; //空のセルはn/a入れる
}
}
echo "
\n";
}
echo "
";
/**** TABLEここまで ****/
}else{ //table表示フラグ消えてるとき。
echo $str[$i];
}
/************ HTMLフッタ出力 **************/
echo "
\nback\n",
"