2015年7月1日

Windows 服務狀態在啟動或停止時卡住的解決辦法

有時候在重啟 tomcat 服務時,因服務無回應導致服務狀態卡死,用 net stop / start 指令回應「服務正在啟動或停止中,請稍候片刻後再試一次」,這個時候就要確認該服務的 PID 號碼 kill 掉就能解決,方法如下:

1. 首先先到「服務」找到卡住的「服務名稱」,例如Tomcat6

2. 利用指令確認該服務名稱的PID,如下方紅字
CMD>sc queryex Tomcat6

SERVICE_NAME: Tomcat6
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x2
        WAIT_HINT          : 0xbb8
        PID                : 1568
        FLAGS              :

3. 用 taskkill kill 掉這個 process
CMD> taskkill /f /pid 1568

4. 到「服務」確認,原本「啟動」/「停止」按鈕變灰色字體,已經可正常使用

2015年2月3日

CentOS 5/6 編譯安裝 ffmpeg

由於我需要 ffmpeg +faststart 的參數,讓 flash player 播放 mp4 時能馬上播放影片,但該參數只有在新版上才支援,看了一下 FFMpeg 官網的編譯手冊,決定自己編譯一套來用

※以下筆記是編譯 h264 、Theora 的影像編碼及 mp3、aac、ogg、libvorbis 聲音編碼格式,若有其他編碼需求的話就需要額外編譯套件


必要套件
shell># yum install autoconf automake gcc gcc-c++ git  libtool make nasm pkgconfig zlib-devel
shell># mkdir ~/ffmpeg_source
shell># cd ~/ffmpeg_source


編譯 yasm
shell># git clone --depth 1 git://github.com/yasm/yasm.git
shell># cd yasm
shell># autoreconf -fiv
shell># ./configure --prefix=/usr/local/ffmpeg
shell># make && make install

※若是 CentOS5 這種比較舊的系統會因為 autoconf 版本太舊無法用 git 下載的版本
請到 http://www.tortall.net/projects/yasm/releases 下載 tarball 編譯

編譯x264
設定環境變數,否則編譯 x264 會有問題
shell># export PATH="$PATH:/usr/local/ffmpeg/bin"
shell># cd ~/ffmpeg_source
shell># git clone --depth 1 git://git.videolan.org/x264
shell># cd x264
shell># ./configure --prefix=/usr/local/ffmpeg --enable-static
shell># make && make install

編譯 libfdk_aac
shell># cd ~/ffmpeg_source
shell># git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
shell># cd fdk-aac
shell># autoreconf -fiv
shell># ./configure --prefix=/usr/local/ffmpeg --disable-shared
shell># make && make install

※CentOS5 會出現 ./configure: line 3399: LT_INIT: command not found 錯誤
請下載 tarball 編譯
下載點:http://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-0.1.4.tar.gz

編譯 libmp3lame
shell># cd ~/ffmpeg_source
shell># curl -L -O http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz
shell># tar xzvf lame-3.99.5.tar.gz
shell># cd lame-3.99.5
shell># ./configure --prefix=/usr/local/ffmpeg --disable-shared --enable-nasm
shell># make && make install

※若連結失效請到 http://sourceforge.net/projects/lame 下載

編譯 libogg
shell># cd ~/ffmpeg_source
shell># curl -L -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
shell># tar xzvf libogg-1.3.2.tar.gz
shell># cd libogg-1.3.2
shell># ./configure --prefix=/usr/local/ffmpeg --disable-shared
shell># make && make install

※若連結失效請到 http://downloads.xiph.org/ 下載

編譯 libvorbis
shell># cd ~/ffmpeg_source
shell># curl -L -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz
shell># tar xzvf libvorbis-1.3.4.tar.gz
shell># cd libvorbis-1.3.4
shell># ./configure --prefix=/usr/local/ffmpeg --disable-shared
shell># make && make install

編譯 libtheora
shell># cd ~/ffmpeg_source
shell># curl -O http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
shell># tar xzvf libtheora-1.1.1.tar.gz
shell># cd libtheora-1.1.1
shell># ./configure --prefix=/usr/local/ffmpeg --with-ogg=/usr/local/ffmpeg --disable-examples --disable-shared --disable-sdltest --disable-vorbistest
shell># make && make install

編譯 ffmpeg
shell># cd ~/ffmpeg_source
shell># git clone --depth 1 git://source.ffmpeg.org/ffmpeg
shell># cd ffmpeg
PKG_CONFIG_PATH="/usr/local/ffmpeg/lib/pkgconfig" ./configure --prefix=/usr/local/ffmpeg --extra-cflags="-I/usr/local/ffmpeg/include" --extra-ldflags="-L/usr/local/ffmpeg/lib" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libtheora
shell># make && make install

測試轉檔
shell>#  ffmpeg -i test-orig.mp4 -c:v libx264 -preset veryfast -b:v 250k -c:a libfdk_aac -b:a 64k -movflags +faststart test-output.mp4


2015年1月13日

query rpm package name only

列出系統安裝的rpm套件名稱,但不要版本資訊

shell>#rpm -qa --qf "%{NAME}\n"
openldap
curl
gzip
db4-utils
e2fsprogs-libs
libselinux-utils
libgcrypt
ethtool
openssl
python-libs


稍微變化一下可排程將套件列表備份起來,之後系統災難復原的時候可以一行指令裝好套件

新增一筆排程到 crontab
shell># crontab -e
@monthly /bin/rpm -qa --qf "%{NAME} " > /root/rpmList.txt

若系統要重安裝時把列表拿出來用
shell># cat /root/rpmList.txt | xargs yum install -y

2014年11月24日

Apache mod_h264 影片串流模組

Apache2 加上 H264 streaming module 後,就能支援影片串流的功能,安裝方式也相當容易。但特別注意到授權部份,非商業使用是採 Creative Commons 授權可免費使用,而商業用途則是要付費的,費用我覺得還滿便宜的,一台伺服器才39歐元,詳細資訊請參閱官方網站說明 

安裝程序 

首先到首頁下載tarball安裝檔並解壓縮
shell># wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.7.tar.gz
shell># tar xzvf apache_mod_h264_streaming-2.2.7.tar.gz

確認系統是否有安裝apxs套件,沒有的話自行用yum安裝
shell># rpm -q httpd-devel
shell># yum -y install httpd-devel

編譯安裝
shell># cd apache_mod_h264_streaming-2.2.7
shell># ./configue --with-apxs=/usr/sbin/apxs
shell># make && make install
shell># ls /etc/httpd/modules/mod_h264_streaming.so
/etc/httpd/modules/mod_h264_streaming.so

設定 httpd.conf
shell># vim /etc/httpd/conf/httpd.conf
加上以下兩行
LoadModule h264_streaming_module modules/mod_h264_streaming.so
AddHandler h264-streaming.extensions .mp4
__儲存離開__

重啟httpd完成安裝
shell># service httpd restart

測試

下載完整影片
shell># wget -O sample.mp4 "http://1.2.3.4/sample.mp4"

給予影片起始時間
shell># wget -O 500_sample.mp4 "http://1.2.3.4/sample.mp4?start=500"

比較下載的兩個檔案大小,若有不一樣代表設定成功

除錯


若無法正常播放影片時,請先確認 Apache access_log,http status code是否為 415,若是可能是影片編碼格式問題導致無法播放,可以用ffmpeg確認問題
1.2.3.4 - - [24/Nov/2014:11:01:38 +0800] "GET /content/1080p.mp4 HTTP/1.1" 415 263 "http://1.2.3.4/player.php?file=/content/1080p.mp4" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36"

編碼

若需要自己處理轉碼,可以參考官網 wiki 採用的參數
How to convert video in H264 format

另外FFMPEG有份值得參考的文件
https://trac.ffmpeg.org/wiki/Encode/H.264

2014年10月15日

ProFTPD SSL/TLS 安裝筆記

#環境
-CentO5
-proftpd-1.3.5
-crypto-utils

#解壓縮tarball
shell># tar xzvf proftpd-1.3.5.tar.gz

#編譯安裝
shell># cd proftpd-1.3.5
shell># ./configure --prefix=/usr/local/proftpd --enable-ctrls --enable-dso --with-shared=mod_tls

shell># make && make install

#建立自我發行憑証(若沒有genkey工具表示沒安裝crypto-utils套件)
shell># genkey --days 3650 test.ftp.biz
接下來按照該工具指示建立自我發行憑證,加密建議用2048bit,建好的憑證預設會放於/etc/pki/tls/{private,certs}目錄下

#編輯設定檔
shell># vim /usr/local/proftpd/etc/proftpd.conf
ServerName "FTP service"
ServerType standalone
Port 21
Umask 027
User nobody
Group nobody
DefaultRoot ~
AllowOverwrite on

#關閉FTP資訊
ServerIdent off

#使用ftpuser檔管制登入帳號
UseFtpUsers on

#logs
TransferLog /var/log/xferlog
SyslogFacility local0
SyslogLevel info

#mod_tls設定
#載入mod_tls模組
<ifmodule mod_dso.c>
    LoadModule mod_tls.c
</ifmodule>

#建議用SSLv3及TLSv1,否則弱掃通常會抱怨v2版本太低
<ifmodule mod_tls.c>
   TLSEngine on
   TLSLog /var/log/proftpd_tls.log
   TLSProtocol SSLv3 TLSv1
   TLSRequired on
   TLSVerifyClient off
   TLSRenegotiate none
   TLSRSACertificateFile /etc/pki/tls/certs/test.ftp.biz.cert
   TLSRSACertificateKeyFile /etc/pki/tls/private/test.ftp.biz.key
</ifmodule>

#設定完成後,可以用以下參數確認設定
shell># /usr/local/proftpd/sbin/proftpd -t -c /usr/local/proftpd/etc/proftpd.conf
Syntax check complete.

#啟動服務
shell># /usr/local/proftpd/sbin/proftpd -c /usr/local/proftpd/etc/proftpd.conf

#Redhat系統也可以從tarball裡取得initscript 由 chkconfig 管理服務啟動
shell># ls proftpd-1.3.5/contrib/dist/rpm/proftpd.init.d

問題
連線時tlslog發現以下訊息,連線狀態會卡在初始TLS
unable to accept TLS connection: received EOF that violates protocol

可能原因
檢查防火牆設定確認有放行FTP服務,或者採用固定的PassivePorts參數固定被動連接埠

參考文獻
http://www.proftpd.org/docs/howto/TLS.html

2014年8月27日

Apache mod_log_forensic

要瞭解 client request 資訊, mod_log_forensic 是非常好用的模組
它會在每個 request 前後安插一組紀錄

參考資料:http://httpd.apache.org/docs/2.2/en/mod/mod_log_forensic.html

2014年7月14日

Windows 建立符號連結指令

#建立檔案符號連結
C:\> mklink C:\fileLink.txt D:\sourceFile.txt

#建立目錄符號連結, 來源目錄後方的反斜線不能少
C:\> mklink /d C:\link  D:\sourceDir\

#刪除目錄符號連結
C:\> rmdir C:\link

#刪除檔案符號連結
C:\> del C:\fileLink

2014年6月24日

samba as wins server

設定SAMBA為WINS伺服器


注意
  1. SAMBA官方手冊上提到, 因為WINS Replication沒有實做完成, 所以不建議同時啟動兩台SAMBA 作為 WINS server
  2. 不建議同時與MS伺服器同時作為WINS伺服器
設定方法
  1. 編輯 /etc/samba/smb.conf,  取消 wins support = yes 的註解, 特別注意到 wins support 與 wins server 這兩個參數不得同時存在, 否則會無法啟動 nmb
  2. 若有 static wins 的需求, 請編輯 /var/lib/samba/wins.dat
    加上 "NETBIOS_NAME#03" 0 192.168.xxx.xxx 66R
    ※注意編輯wins.dat時要先停止nmb服務
  3. 啟動 nmb 

參考文獻

2014年5月23日

DRBD administration note

DRBD版本: 8.3.x

確認 DRBD 運作狀況

可用以下兩種方式取得 DRBD 運作狀況
1. shell># cat /proc/drbd
2. shell># /usr/sbin/drbd-overview

shell># cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.                    centos.org, 2013-03-27 16:01:26
 1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate B r-----
    ns:209706040 nr:0 dw:0 dr:209706040 al:0 bm:12800 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
輸出說明
cs (connection status): 正常狀態為 connected, 其餘可參考 connection-stats
ro(role): 主機的角色狀態( Primary(本機) / Secondard(遠端) )
ds(disk states): 硬碟狀態, 若兩邊同步狀況良好應為 UpToDate / UpToDate, 其餘狀態參考 disk-stats
ns(network send): 透過網路傳到另一端的資料大小, 單位:Kbyte
nr(network receive): 透過網路接收的資料大小, 單位:Kbyte
dw(disk read): 透過網路寫入到本機的資料大小, 單位:Kbyte
dr(disk read): 透過網路讀取本機的資料大小,  單位:Kbyte
al(activity log): activity log 更新數(位於meta data區塊)
bm(bit map): bitmap 更新數(位於meta data區塊)
lo(local count): DRBD  request local I/O 數
pe(pending): 送到另一端的 request 數, 但尚未收到回覆
ua(unacknowledged): 收到另一端的 request 但尚未回覆的數量
ap(application pending): 轉送到DRBD且尚未得到回覆的 block I/O數
wo(write order): write ordering method: b(barrier), f(flush), n(none)
oos(out of sync): Amount of storage currently out of sync; in KiB


調整 DRBD 設定

1.修改 /etc/drbd.conf
2.將 drbd.conf 複製並覆蓋到另一主機的 /etc/drbd.conf
3.在兩台主機執行 drbdadm adjust resource

啟用 resource

shell># drbdadm attach resource
shell># drbdadm syncer resource
shell># drbdadm connect resource
或者
shell># drbdadm up resource 

停用 resource

shell># drbdadm disconnect resource
shell># drbdadm detach resource
或者
shell># drbdadm down resource

resource 角色切換

shell># drbdadm primary resource
shell># drbdadm secondary resource

on-line verification

shell># drbdadm verify resource
※執行 verify 的過程並不會影響正常運作, 且可以進行DRBD的角色切換
※可將上述指令加到 crontab 做定期的檢查ㄌ
※ Linux kernel 需支援 crypto API
※ algorithm 可為 sha1, md5, crc32c
※drbd.conf必須有以下設定才有支援verify功能
resource resource
   syncer {
      verify-alg algorithm;
   }
}

傳輸速率

傳輸數率是以bytes為單位, 建議測試I/O及網路的throughput, 取最小的值帶入以下公式
假設I/O throughput 180MB/s, 網路為 110MB/s, 那麼建議值為 33MB/s
110 x 0.3 = 33MB/s
resource resource
    syncer {
        rate 33M;
    }
}

暫時提高傳輸速率, 請在Primary執行以下指令
shell># drbdsetup /dev/drbdnum syncer -r 110M

復原速率
shell># drbdadm adjust resource

split brain recovery

當偵測到兩個node是Primary狀態(或在Disconnect時, 曾經是Primary的狀態)就會發生裂腦的狀況, 可以透過 log 發現 "Split-Brain detected, dropping connection!" 的訊息, 另外的症狀是不管你如何重新 connect , 兩邊會出現 StandAlone (或者另一邊為WFConnection) 的狀態。

除非有設定裂腦自動復原的功能(請參考 configure-split-brain-behavior), 否則需要管理者介入處理, 告訴DRBD要放棄某一邊的資料, 方法如下:

在要放棄資料的那台主機(裂腦受害者)執行
shell># drbdadm secondary resource
shell># drbdadm -- --discard-my-data connect resource

在保留資料那台主機(裂腦生存者)執行
shell># drbdadm connect resource

benchmark

DRBD benchmark

2014年5月22日

DRBD meta data 筆記

DRBD meta data

用來儲存以下資訊

1. DRBD device size
2. Generation Identifier (GI)
    ※判斷連線中的node是否為同一叢集
    ※判斷背景同步的方向
    ※判斷是否需要全部重新同步
    ※判斷裂腦
3. Activity Log(AL)  - Info
   ※用來紀錄近期更新的block, 以避免 fail over 的過程中資料出現
    "one write ahead"的狀況
4. Quick-sync bitmap
   ※DRBD內部資料結構, 用來追蹤兩端點間資料的同步狀況

Internal meta data


將 Meta data 儲存於物理底層裝置(physical low-level)並視為正式資料儲存, 因為要在正式資料磁區寫入 meta data, 所以這個物理磁碟內的資料會被覆蓋掉, 若要保留磁碟內的資料, 請改用 external meta data

優點

※因跟著實際資料一起儲存, 所以當硬碟故障時, 管理者不需要進行特別的處理

缺點

※若沒有採用磁碟陣列(例如單顆硬碟), 採用 internal meta data 可能會引起效能上的問題(因每次資料讀入時額外產生 meta data I/O)

External meta data


優點

※在一些寫入的狀況下, 可提昇延遲上的效能
※保留磁碟中的資料下建立DRBD叢集

缺點

※當一端發生故障時, 管理者需要介入處理(If production data crash, but not meta data)

Meta data 空間評估(近似值)

MMB < ( CMB / 32768 ) +1   ※ CMB 為data device大小

假若 /dev/sdb1 有200G的空間, 規劃為 data device, 那 meta size 會小於7M

2014年3月4日

ClamAV 防毒筆記

安裝

CentOS 可透過 rpmforge 套件庫安裝, 但想要持續更新主程式的話, 用 tarball 編譯安裝會比較好處理, 所以我決定採用編譯安裝的方式進行。

下載最新穩定版 http://www.clamav.net/lang/en/download/sources/
編譯需求: pcre-devel, bzip2-devel, zlib-devel, openssl-devel, libxml2-devel, libcurl-devel, make, gcc

建立 clamav 帳號及群組
shell>#groupadd clamav
shell>#useradd -g clamav -M -s /sbin/nologin -c "ClamAV anti virus" clamav

解壓縮然後編譯
shell># tar xzvf clamav-x.y.z.tar.gz
shell># cd clamav-x.y.z
shell># ./configure --prefix=/usr/local/clamav --with-libbz2-prefix=/usr --with-libcurl=/usr --with-iconv --with-user=clamav --with-group=clamav  --with-zlib=/usr --with-pcre  --with-xml=/usr
shell># make && make install

※ 在 clamav 手冊裡面有提到 on-access scaning 的功能, 但不建議安裝在 production 環境, 且看 Dazuko 網站目前沒有維護人員, 所以不建議安裝。

※ clamav 帳號必須有權限掃描目標檔案


設定

freshclam

使用 freshclam 程式更新病毒碼, 更新病毒碼可以利用 crond 排程執行 freshclam 指令, 或者將 freshclam 設定為 daemon 執行, 以下是採用 daemon 方式。

新增 log 檔及 pid 目錄
shell># touch /var/log/freshclam.log
shell># chown clamav /var/log/freshclam.log; chmod 600 /var/log/freshclam.log
shell># mkdir /var/run/clamav; chown clamav /var/run/clamav
shell># mkdir /var/lib/clamav; chown clamav /var/lib/clamav

設定 freshclam.conf
shell># cp /usr/local/clamav/etc/freshclam.conf.sample /usr/local/clamav/etc/freshclam.conf
shell># vim /usr/local/clamav/etc/freshclam.conf
將第8行 Example 改為 #Example
將第13行 #DatabaseDirectory /var/lib/clamav 改為 DatabaseDirectory /var/lib/clamav
將第17行 #UpdateLogFile /var/log/freshclam.log 改為 UpdateLogFile /var/log/clamav/freshclam.log
將第26行 #LogFileMaxSize 1M 改為 LogFileMaxSize 10M
將第47行 #LogRotate yes 改為 LogRotate yes
將第51行 #PidFile /var/run/freshclam.pid 改為 PidFile /var/run/clamav/freshclam.pid

執行 freshclam daemon, 若成功的話可以在 /var/log/freshclam.log 看到啟動訊息
shell># /usr/local/clamav/bin/freshclam -d

設定開機啟動 freshclam daemon
echo "/usr/local/clamav/bin/freshclam -d" >> /etc/rc.local

若要馬上掃毒的話, 先執行一次freshclam
shell># /usr/local/clamav/bin/freshclam

停止 freshclam
shell># killall freshclam

若要採用 crond 更新, 新增以下參數到 crontab 即可, 建議 N 不要使用 10 的倍數
N * * * * /usr/local/clamav/bin/freshclam --quiet

clamscan

clamscan 是指令模式的 scanner,  由於沒有 on-access scan, 所以記得要排程掃毒, 常用的參數如下

-i 只回報受感染的檔案
-l  FILE 儲存掃描報告
-r 遞迴掃描 (掃子目錄下的檔案)
--exclude-dir=REGEX  列外目錄
--move=DIRECTORY  將受感染的檔案移動到其他目錄下

Example:
shell># cd /; /usr/local/clamav/bin/clamscan -r -l  report.txt --exclude-dir=^/{proc,dev,sys} -i

clamd

clamd 是 clam antivirus daemon, 可監聽 TCP 或 Unix Socket, 並使用 clamdscan 來執行掃毒, 在使用前請先設定 clamd.conf 設定檔。

※若沒有範例檔時, 可利用以下指令產生, NAME 可為 clamd.conf freshclam.conf clamav-milter.conf
Example:
shell># /usr/local/clamav/bin/clamconf --generate-config=clamd.conf > /usr/local/clamav/etc/clamd.conf

設定 clamd.conf
shell># vim /usr/local/clamav/conf/clamd.conf
將第8行 Example 改為 #Example
將第14行 #LogFile /var/log/clamd.log 改為 LogFile /var/log/clamd.log
將第35行 #LogTime yes 改為 LogTime yes
將第57行 #LogRotate yes 改為 LogRotate yes
將第66行 #PidFile /var/run/clamav/clamd.pid 改為 PidFile /var/run/clamav/clamd.pid
將第74行 #DatabaseDirectory /var/lib/clamav 改為 DatabaseDirectory /var/lib/clamav
將第85行 #LocalSocket /tmp/clamd.socket 改為 LocalSocket /tmp/clamd.socket
將第164行 #ExcludePath ^/proc/ 改為 ExcludePath ^/proc/
將第165行 #ExcludePath ^/sys/ 改為 ExcludePath ^/sys/

檢視 clamd.conf 結果
shell># /usr/local/clamav/bin/clamconf

執行 clamd
shell># /usr/local/clamav/sbin/clamd

停止 clamd
shell># killall clamd

設定開機啟動
shell># echo "/usr/local/clamav/sbin/clamd" >> /etc/rc.local

clamdscan

為 clamd  client 程式, 必須在 clamd 啟動時使用, 其使用參數與 clamscan 雷同, 由於沒有 on-access scan, 所以一樣要排程掃毒

Example:
shell># /usr/local/clamav/bin/clamdscan --multiscan -i  -l report.txt --move=/tmp/infected

問題紀錄

  1. 在 0.95.1 以前版本,  /usr/local/clamav/share 下會有一堆以 clamav- 開頭的目錄, 這些是 freshclam 的暫存檔, 可以放心的刪除


參考文獻

2014年2月12日

允許 PPTP 連入採用 NAT 模式的 SSG 設備且只有一組 Public IP

環境:ScreenOS 5.0以上
問題:SSG設定為NAT模式,且只有一組 Public IP 作為 PPTP Service VIP

設定方式(CLI)
註: PPTP server private IP is 192.168.1.12 and in zone TRUST.
#啟用 vip multi-port,此步驟需要重新啟動設備(這個步驟很重要, 沒處理的話 PPTP 會無法撥通)
set vip multi-port [Enter]
save [Enter]
reset [Enter]

#新增一組自訂服務,CLI指令會設定出如下圖的服務
set service PPTPService group "other" 47 src 2048-2048 dst 2048-2048 [Enter]
set service PPTPService + tcp src 0-65535 dst 1723-1723 [Enter]
set interface ethernet0/0 vip 2048 PPTPService 192.168.1.12 [Enter]











#最後建立一條 inbound 規則
set policy from untrust to trust "any" "VIP::1" "PPTPService" permit [Enter]
save [Enter]


參考文獻
JUNIPER KB5471

2014年2月5日

修改檔名的編碼工具

在Linux下有個很方便的指令工具,可以轉換檔名的語系編碼,就我的案例是在 big5 與 utf-8 之間轉換,使用方式也很簡單,適合用script撰寫批次處理大量檔案使用,另外此工具也能處理檔名的大小寫

#安裝 convmv
shell># yum install convmv

#查看系統支援哪些語系
shell># convmv -list

#查看使用說明
shell># convmv --help

#轉換工作目錄下的檔案,包含子目錄
shell># convmv -f utf-8 -t big5 -r  --notest *