> ++ 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

Reply via email to