2008年8月20日

如何使用別人的IP上網?

用途 : 陷害別人 XD, 某台Server只能用某個IP登入, 隱藏身份等...

前置作業:
1. 需有一台可SSH登入的主機, 可用Linux 或在Windows上安裝OpenSSH
2. 需有安裝 PuTTY

作法:

1. 開啟Putty -> SSH -> Tunnels , 在右邊窗格, Source Port 輸入 20000
Destination 的選項點選 Dynamic, 然後按下 [Add], 結果會如下圖所示

















這個意思就是說你在本機電腦上, 連20000 Port會被導向到你連上的SSH Server, 從該台 SSH Server的IP往外連

2. 回到 Session 窗格設好 SSH Server的資訊, 搭配第一步弄好的設定連上 SSH Server, 即可將Putty視窗縮小

3. 例如使用IE -> 工具 -> 網際網路選項 -> 連線 -> 區域網路設定 -> Proxy 伺服器 打勾 -> 點選進階 -> 在 Socks 那邊輸入 localhost , 連接埠填 20000 -> 確定

這樣就可以去類似 whereismyip 的網站, 你就會發現你的IE連線的IP已改成 SSH Server的IP了!

2008年8月19日

懶人自動化系列1 - 如何計算某件事情的處理時間

因為工作上的需求,需要有效管理,而有效管理就是需要一些量化的數據來佐證,明明沒什麼好分析的,但還是硬要分析個東西出來,而且還要比較來,比較去看個趨勢之類,為了要有更多的時間,所以只能想辦法來讓電腦來代勞了

故需求是 "計算一個月內每件派案的處理時間(註1)"

而那些數據並不是乖乖的存成文字檔或放在DB等你去撈,而是在一個ASP網頁的查詢系統上
,你只能連到那個網頁去查詢你自己曾經處理過的過程,所以這個部分我是用 curl 的方式模擬POST,把全部的先抓回來,再去parser檔案撈出想要的資訊,再存檔,此部份有時間再來詳述

先開始吧

執行環境:CentOS v5.0
程式語言:Perl

前置作業
需先確認 cpan 可用

1. 切換為 root, 在命令列打 cpan
2. 輸入 install Date::Manip, 接下來就是一段漫長的安裝過程
3. 寫程式

首先需初始化你的假期與上班時間
use Date::Manip;

Date_Init('PersonalCnf=holiday.cfg',
'WorkWeekBeg=1',
'WorkWeekEnd=5',
'WorkDayBeg=08:30',
'WorkDayEnd=18:00');

而 holiday.cfg 為自己建的一個假日檔,你可以放今年的國定假日在裡面,內容如下

*Holiday
1/1 = New Year's Day
10/10 = Nation's Birth Day
#fourth Thu in Nov = Thanksgiving

其餘參數說明
WorkWeekBeg=1' # 每週上班的第一天是星期一
'WorkWeekEnd=5' # 每週上班的最後天是星期五
'WorkDayBeg=08:30' # 每天上班的時間是 8:30
'WorkDayEnd=18:00' # 每天下班的時間是 18:00

重點 => 開始計算經過時間,程式如下

$d1 = "2008/06/03 11:00";
$d2 = "2008/06/05 12:30";
$d = DateCalc($d1,$d2,\$err,2);

#計算總共經過多久時間(不含下班時間), 重點在於那個紅字的 2 表示切換為 Business Mode, 只計算上班時間,所以在 2008/06/03 的18:00~2008/06/04的08:30之前的時間是不會被計算的~
以上為範例,我自己的作法是用 open FILE, "< $ARGV[0]"; 讀入整理好一個月的檔案資料,再進程式來算,以往可能需花1個小時人工計算的工作,現在約10秒內就可解決了!

註1 : 派案時間為客服人員接到客戶的來電問題,經過分類之後轉派給後端人員的程序,從開始到處理完畢的時間為派案處理時間

如何讓 Apache 的 access log能夠自動rotate

根據許多前人的經驗, 發現 Apache 內建的 Rotatelogs.exe 雖然可以做到 rotate , 但是其分割是以啟動httpd的時候起算,也就是說你在8/19 的15:00開始啟動 apache, 你的access.log並不會在8/20就被closed, 而是在 8/20 的15:00, 這樣的話對於系統管理者來說,就喪失了分日期管理的意義 (還要自己去parse內容),所以使用 mod_log_rotate 模組是比較理想的方式, 使用方式如下

前置作業
1.請看目前自己的Apache版本為何, 可用 httpd -v 或 apachectl status來查看
2.下載相對應版本的 mod_log_rotate.so , 可至此網站下載

正式開始
1. 修改 httpd.conf, 用以載入模組:
LoadModule log_rotate_module modules/mod_log_rotate.so
CustomLog /logs/access_%Y%m%d.log common
RotateLogs On
RotateLogsLocalTime On

2. 重啟 apache
使用 service httpd restart 或 apachectl restart 或若使用xampp, wamp 之類可用選單重啟

如此就可以用天為單位,分割 access.log 了

cygwin 使用 crontab

1. 先跑setup.exe, 安裝cron服務
2. cygrunsrv -I cron -p /usr/sbin/cron -a -D
3. 控制台 -> 系統管理工具 -> 服務 , 把 cron 起動起來
4. cron-config
5. 新增使用者 cyg_server


檢查
ps -ef | grep cron

Linux 下的bt工具

使用 screen + rtorrent, 從此在 Linux 下就可以邊bt邊工作了~
這個小工具發生錯誤