> ++ yup, solusi paling sederhana memang begitu. Yup juga, memang sederhana sekali, dan ada banyak faktor lain tidak diperhitungkan. Bukan coding yang baik memang. :-)
> Tapi (CMIIW) dgn cara diatas anda akan sulit utk menghitung selisih antara > connected(StartTime) & disconnected(StopTime) karena gak ada acuan atau key > untuk cari tau informasi connected dan disconnected yg mana yg satu pair ( 1 > pasang ). > Mestinya ditambahin "key" (SessionId) yg unique utk bisa menghitung berapa > durasi koneksinya. misalnya aja pakai timestamp. Tanpa Sessionid sebenarnya bisa juga pakai pengecekan sederhana saja berdasarkan Paired keyword Connected - Disconnected. Algoritmenya: Baris Connected harus diikuti baris Disconnected. Kalau Connected langsung diikuti Connected lagi kesimpulannya session sebelumnya tidak bisa dihitung. (Antara lain karena listrik mati misalnya). > Apa enggak lebih sulit jadinya untuk bikin script utk kalkulasi jam > pemakaiannya ? Tidak juga. kalau kita pakai format date +%d%t%m%t%Y%tH%t%M%t%S hasilnya adalah field tanggal, bulan, tahun, jam, menit, detik dipisahkan oleh Tab. Selanjutnya kombinasi sed dan gawk tak akan sulit mengidentifikasi field-field itu. Tanggal, penting dicatat untuk memperhitungkan waktu saat lewat tengah malam. ++ nah gitu dong ... dikeluarin detail jurus-jurusnya :) saya ngomentarin karena sebatas reaksi atas apa yg anda posting --- start quote --- echo Connected pada $(date) >> /path/ke/namalogfile echo Disconnected pada $(date) >> /path/ke/namalogfile --- end quote --- extra pusing kalo dgn format yg kemaren kan ? BTW yg kemaren bug, sekarang dah di benerin nih, tinggal nge-patch aja :) > IMHO memang pakai mysql ribet tapi menurut saya jika memang ada kebutuhan > utk menghitung durasi jam pemakaian lebih enak & akurat, karena utk > kalkulasi semacam data timestamp sudah disediain toolsnya ama mysql. > Apalagi ntar dipadukan ama php, jadi lebih siiip dah :) Masing-masing ada keasyikan tersendiri, ya kan? Terima kasih pada GNU yang membekali kita dengan peralatan perang yang lengkap. ++ yup ... blom lagi banyak hal-hal yg bisa lebih jauh utk di explore & berbagi BTW. Setahu saya di beberapa Distro sudah ada program accounting untuk keperluan semacam ini. Di SuSE cukup dengan command line $ accounting <enter> (tersedia pula banyak options lain) akan tersaji semua data koneksi internet dialup kita. Kalau tidak mau repot pake saja yang sudah ada. ++ kalo ada spare time dan engga bete enakan yg repot, makin repot makin asyik ... BTW ni dia scriptnya (setelah aduk-aduk baru ketemu) barusan dicoba masih fungsional, tapi saya jalanin langsung filenya engga via wvdial, meski begitu kayaknya bisa. [EMAIL PROTECTED] dialup_server]# cat MyDataBase.sql --cut-- CREATE TABLE dialup ( AcctSessionId varchar(14) NOT NULL, AcctStartTime datetime NOT NULL default '0000-00-00 00:00:00', AcctStopTime datetime NOT NULL default '0000-00-00 00:00:00', AcctSessionTime int(14) NOT NULL default '0', PRIMARY KEY (AcctSessionId) ) TYPE=MyISAM; --cut-- === [EMAIL PROTECTED] dialup_server]# cat ip-up.local #!/bin/bash my_username="MyName" my_password="MyPass" my_hostname="localhost" my_database="MyDataBase" JamMntDtk=`date +%T` ThnBlnHri=`date +%Y-%m-%d` x_AcctSessionId=`date +%Y%m%d%H%M%S` x_AcctStartTime="$ThnBlnHri $JamMntDtk" echo "/var/tmp/dialupx_id : $x_AcctSessionId" echo $x_AcctSessionId > /var/tmp/dialupx_id strSQL1=`mysql -u$my_username -p$my_password -h$my_hostname -D$my_database - e \ "INSERT into dialup VALUES ('$x_AcctSessionId','$x_AcctStartTime','','')"` #sleep 2 #/etc/myfirewall.sh ## <== jalanin srcipt firewall sekaligus masq exit 0 === [EMAIL PROTECTED] dialup_server]# cat ip-down.local #!/bin/bash my_username="MyName" my_password="MyPass" my_hostname="localhost" my_database="MyDataBase" JamMntDtk=`date +%T` ThnBlnHri=`date +%Y-%m-%d` x_AcctSessionId=`cat /var/tmp/dialupx_id` x_AcctStopTime="$ThnBlnHri $JamMntDtk" echo "x_AcctSessionId = $x_AcctSessionId" strSQL1=`mysql -u$my_username -p$my_password -h$my_hostname -D$my_database - e \ "UPDATE dialup SET AcctStopTime='$x_AcctStopTime' WHERE AcctSessionId='$x_AcctSessionId';"` strSQL2=`mysql -u$my_username -p$my_password -h$my_hostname -D$my_database - e \ "SELECT unix_timestamp(AcctStopTime)-unix_timestamp(AcctStartTime) FROM dialup WHERE AcctSessionId='$x_AcctSessionId';"` x_AcctSessionTime=`echo $strSQL2 | cut -d" " -f2` echo "x_AcctSessionTime = $x_AcctSessionTime" strSQL3=`mysql -u$my_username -p$my_password -h$my_hostname -D$my_database - e \ "UPDATE dialup SET AcctSessionTime=$x_AcctSessionTime WHERE AcctSessionId='$x_AcctSessionId';"` cat /dev/null > /var/tmp/dialupx_id exit 0 === [EMAIL PROTECTED] dialup_server]# ./ip-up.local /var/tmp/dialupx_id : 20050810092442 mysql> select * from dialup; +----------------+---------------------+---------------------+-------------- ---+ | AcctSessionId | AcctStartTime | AcctStopTime | AcctSessionTime | +----------------+---------------------+---------------------+-------------- ---+ | 20050810092442 | 2005-08-10 09:24:42 | 0000-00-00 00:00:00 | 0 | +----------------+---------------------+---------------------+-------------- ---+ 1 row in set (0.00 sec) [EMAIL PROTECTED] dialup_server]# ./ip-down.local x_AcctSessionId = 20050810092442 x_AcctSessionTime = 46 mysql> select * from dialup; +----------------+---------------------+---------------------+-------------- ---+ | AcctSessionId | AcctStartTime | AcctStopTime | AcctSessionTime | +----------------+---------------------+---------------------+-------------- ---+ | 20050810092442 | 2005-08-10 09:24:42 | 2005-08-10 09:25:28 | 46 | +----------------+---------------------+---------------------+-------------- ---+ 1 row in set (0.00 sec) [EMAIL PROTECTED] dialup_server]# ./ip-up.local /var/tmp/dialupx_id : 20050810092613 mysql> select * from dialup; +----------------+---------------------+---------------------+-------------- ---+ | AcctSessionId | AcctStartTime | AcctStopTime | AcctSessionTime | +----------------+---------------------+---------------------+-------------- ---+ | 20050810092442 | 2005-08-10 09:24:42 | 2005-08-10 09:25:28 | 46 | | 20050810092613 | 2005-08-10 09:26:13 | 0000-00-00 00:00:00 | 0 | +----------------+---------------------+---------------------+-------------- ---+ 2 rows in set (0.00 sec) [EMAIL PROTECTED] dialup_server]# ./ip-down.local x_AcctSessionId = 20050810092613 x_AcctSessionTime = 37 mysql> select * from dialup; +----------------+---------------------+---------------------+-------------- ---+ | AcctSessionId | AcctStartTime | AcctStopTime | AcctSessionTime | +----------------+---------------------+---------------------+-------------- ---+ | 20050810092442 | 2005-08-10 09:24:42 | 2005-08-10 09:25:28 | 46 | | 20050810092613 | 2005-08-10 09:26:13 | 2005-08-10 09:26:50 | 37 | +----------------+---------------------+---------------------+-------------- ---+ 2 rows in set (0.01 sec) mysql> select sum(AcctSessionTime) as JamPakai1, sec_to_time(sum(AcctSessionTime)) as JamPakai2 from dialup; +-----------+-----------+ | JamPakai1 | JamPakai2 | +-----------+-----------+ | 83 | 00:01:23 | +-----------+-----------+ 1 row in set (0.00 sec) Logikanya niru punya radius, biar manis sekalian field-fieldnya dimirip-miripin ... meski masih jauuuuuuh dari sempurna, masukan dong dari rekan-rekan ... Sorry jadi panjang, semoga dpt membantu & ada manfaatnya salam, -rianu- -- Unsubscribe: kirim email kosong ke [EMAIL PROTECTED] Arsip, FAQ, dan info milis di http://linux.or.id/milis Tidak bisa posting? Baca: http://linux.or.id/problemmilis http://linux.or.id/tatatertibmilis