#!/usr/bin/php setMaxRedirects ( 20 ); // Arcors uses lots of if ( $_SERVER['argc'] != 6 ) die ( 'Use: ./check_arcor USERNAME PASSWORD WARN CRIT DAYS WARNING und CRITIAL in Euro Bsp: ./check_arcor my_user my_pw 5 10 1 Bsp: ./check_arcor my_user my_pw 10 20 7 ' ); $user = $_SERVER['argv'][1]; $pw = $_SERVER['argv'][2]; $warn = (int)$_SERVER['argv'][3]; $critical = (int)$_SERVER['argv'][4]; $days = (int)$_SERVER['argv'][5]; $from = date ( 'd.m.Y', time() - ($days-1) * 3600 * 24 ); $to = date ( 'd.m.Y' ); $client->setDefaultHeader( array ( 'User-Agent' => 'Nagios Spider' ) ); $client->get ( 'http://www.arcor.de/' ); $client->post ( 'https://www.arcor.de/login/login.jsp', array ( 'user_name' => $user, 'password' => $pw ) ); $buf = $client->currentResponse(); $tmp = split ( "=", $buf['headers']['refresh'] ); $client->get ( $tmp[1] ); $client->get ( 'https://www.webbill.arcor.de/webbill/index.jsp' ); $client->get ( 'https://www.webbill.arcor.de/webbill/getWarmBillingData.sap?withPrefs=x' ); $client->get ( 'https://www.webbill.arcor.de/webbill/selectDownload.sap' ); $client->post ( 'https://www.webbill.arcor.de/webbill/advancedDownload.sap', array ( 'method' => 'interval', 'begin_date' => $from, 'end_date' => $to, 'download_type' => 'CSV' ) ); $buf = $client->currentResponse(); $file = '/tmp/arcor.csv'; file_put_contents ( $file, $buf['body'] ); $f = fopen ( $file, "r" ); fgetcsv ( $f, 10000 ); // Skip header $betrag = 0; $sekunden = 0; $teilnehmer = array(); while ( $row = fgetcsv ( $f, 10000, ";", "\"" ) ) { $price = (float) str_replace ( ",", ".", $row[12] ); $time = (int) $row[10]; $betrag += $price; $sekunden += $time; $tname = str_replace ( ' ', '', $row[1] ); $teilnehmer[$tname]['price'] += $price; $teilnehmer[$tname]['time'] += $time; } $str = ' - Past '.$days.' day(s): '.sprintf ( "%.2f", $betrag ).' EUR '.(int)($sekunden/60).' Minuten |betrag='.$betrag.'EUR;'.$warn.';'.$critical.";0;minuten=".(int)($sekunden/60)."min;"; if ( is_array ( $teilnehmer ) ) foreach ( $teilnehmer as $key => $value ) { $str .= 'betrag_'.$key.'='.$value['price'].'EUR;minuten_'.$key.'='.(int)($value['time']/60).'min;'; } if ( $betrag > $critical ) { echo "CRITCAL".$str; exit ( 2 ); } else if ( $betrag > $warn ) { echo "WARN".$str; exit ( 1 ); } else { echo "OK".$str; exit ( 0 ); } ?>