Category: Perl

RHEL / CentOS 安裝 ImageMagick 及 Imagick

ImageMagick 是一套開源的圖片編輯工具, 可以建立、編輯、轉換格式、建立縮圖等。在 PHP 或 Perl 使用 ImageMagick 編輯圖片十分好用, 而 PHP 的 Imagick 是透過 ImageMagick API 建立及編輯圖片的模組, 以下會示範在 RHEL 及 CentOS 安裝 ImageMagick, PHP 的 Imagick 模組以及 Perl 的 ImageMagick-perl.安裝 …

刪除 Postfix Queue 內郵件

Postfix 跟其他 MTA 一樣, 會將不能成功發送的郵件放到 Queue 裡面, 在特定的時間內重新嘗試發送, 超過指定的時間會自動刪除。但如果發送大量郵件, 例如有用戶發送大量垃圾電郵, 會在 Queue 內積壓大量的郵件, 這時可以手動刪除。以下刪除 Postfix Queue 內郵件的方法:列出 Postfix Queue 內所有郵件: # mailq 刪除 Postfix Queue 內所有郵件: # postsuper -d ALL …

Perl 印出顏色文字

在寫 Perl Script 時通常我會將錯誤訊息用紅色顯示, Warning 用黃色, 執行正確用錄色, 看似沒什麼用, 但其實很方便, 不用細心看輸出內容就可以知道有沒有錯誤。在另一篇文章 Shell Script 輸出顏色文字 介紹了在 Shell Script 輸出顏色文字的方法, 但這個方法並不好記, 因為顏色碼是數字, 通常用過就會忘記。Perl 要印出顏色文字同樣可以用上面提及的顏色碼, 但另一個更方便的做法是用內建的 ANSIColor 模組, 用 ANSIColor 的好處是不用記顏色碼, 直接用顏色的英文名稱即可, 例如 red, …

Perl 讀入管線 (pipe) 輸入

Linux 下的管線 (pipe) 很實用,可以將多個指令一同執行,如果在 Perl Script 想讀取 pipe 輸入,可以用 符號,這樣就可以將 Perl Script 寫到像 Linux 下的指令那樣運作,寫法也十分簡單,就這樣:testing.pl 以上程式碼會讀入 pipe 輸入,然後逐行印出,在指令模式這樣做: cat /etc/fstab | testing.pl 上面的指令將 cat /etc/fstab 的輸出導入到 testing.pl。

[Perl Script] — 自動備份 MySQL

這個 Perl Script 使用 mysqldump 備份 MySQL, 可以放到 crontab 自動執行。程式需要按需要修改, 以下是需要修改的選項:$db_username: mysql 使用者名稱 $db_password: mysql 密碼 $db_host: mysql server 位置 $mysqldump: mysqldump 位置 $backup_dir: 儲存備份檔的目錄 $rotate: 保留備份數量 @backup_db: 需要備份的資料庫, 以新行或空格分隔, …

[Perl Script] – 自動刪除 Apache 舊記錄檔

上一篇文章 Apache Log Rotate 設定 講述了 Apache 輪替記錄檔的方法, 但如果舊日誌一直不理的話, 同樣佔據碟碟空間, 因為 Apache 不會刪除舊記錄檔, 而且將新記錄寫入新建立的檔案, 以下 Perl Script 可以自動刪除舊記錄檔, 只要設定好記錄檔目錄, 名稱後, 放到 crontab 執行便可以了。 這個 Perl Script 會掃瞄記錄檔目錄, 並查看檔案名稱為是 access …

[Perl Script] 統計記錄檔 IP

如果發現伺服器有大量存取記錄, 要檢查是否 DDOS 攻擊, 可以開啟記錄檔檢查, 但資料量大的話, 要人手檢查也很困難, 所以我寫了這個簡單的 Perl Script, 用作檢查記錄檔內出現次數最多的 IP, 鎖定出現頻率最高的 IP 作檢查會容易得多。編寫時想到有多種記錄檔也有此需要, 只要記錄檔是一行一個記錄, 而每行只有一個 IP 出現便可以用, 已經試過 apache access log 及 error log, /var/log/secure, /var/log/vsftpd.log 也可以正確使用。執行速度尚算可以, 檢查一個 …

Perl 陣列排序

Perl 要對陣列進行排序, 可以用內建函式 sort 來做, 例如:以上第 7 行用了 sort 對 @words 進行排序, 輸出結果會是: abc def mmm xyz 但這個 sort 函式是用字串排序的,如果陣列的值是數值,sort 也會根據字串的方式排序,即 123 會排在 23 前面,因為 “1” 是排在 “2” 前面,這樣是做不到排序數值的。這時對數值進行排序可以透過 實現, …

Perl DBI 防止 SQL Injection

現在很多地方都用上資料庫系統, 有一些是檢查用戶名稱及密碼的登入系統, 但如果沒有對用戶輸入進行過濾, 會有很多潛在危除, 例如以下程式碼:my $sth = $dbh->prepare(“select * from user where user=’$user’ and pass=’$pass'”);以上這句 SQL 會檢索 user 資料表, 找出 user 及 pass 與用戶輸入匹配的紀錄, 有回傳便可以登入, 沒有回傳便登入失敗, 這個很容易理解。但如果用戶的輸入包括了一些特定的 sql 指令, 那便有問題了, …