很久以前看到了 othree 的〈掛站系統設定篇〉,學會了如何在工作站上掛著 BBS。在那以後就很少使用桌面軟體來連 PTT 等 BBS。使用工作站掛站的優點主要是不用一直重新登入很方便,另外在一些公共區域上網時,避免直接使用明文帳密連結 telnet 而透過 ssh 感覺比較安心一點。(不過其實我建議 BBS 還是使用不同的密碼比較好呀。)
後來我發現其實掛一些我平常在逛的站如 PTT or PTT2 其實很少會遇到逾時被登出的狀況,所以就省去了使用 expect 來不斷送出空白訊號的麻煩。就用這篇文章來紀錄這個簡化的掛站方法。
Tmux
筆者原本使用 screen
,不過後來換成 tmux
之後又改了新版的 PTT 掛站指令,感覺更方便了。如下所示,只要放進 ~/.bashrc
之中,則只要打 ptt
或 ptt2
就可以連上掛站的 BBS 們了。
同時也支援在已經打開 tmux 的情況下切換到對應的 session。
function ptt() {
if [ -n "$TMUX" ]; then
TMUX= tmux new-session -d -s P1 "tmux set status off; ssh bbsu@ptt.cc" &>/dev/null
tmux switch-client -t P1
else
tmux new-session -A -s P1 "tmux set status off; ssh bbsu@ptt.cc"
fi
}
function ptt2() {
if [ -n "$TMUX" ]; then
TMUX= tmux new-session -d -s P2 "tmux set status off; ssh bbsu@ptt2.cc" &>/dev/null
tmux switch-client -t P2
else
tmux new-session -A -s P2 "tmux set status off; ssh bbsu@ptt2.cc"
fi
}
Screen
首先在 $HOME
目錄建一個叫做 screenrc-bbs
的資料夾,接下來在資料夾裡根據想逛的 bbs 建立 screenrc 檔案。
比如說 screenrc-bbs/ptt:
vbell off
screen -t 'ptt' ssh bbsu@ptt.cc
screenrc-bbs/ptt2:
vbell off
screen -t 'ptt2' ssh bbsu@ptt2.cc
screenrc-bbs/ptt3:
vbell off
defencoding big5
screen -t 'ptt3' telnet ptt3.cc
defencoding big5
screenrc-bbs/bs2:
vbell off
defencoding big5
screen -t 'bs2' telnet -8 bs2.to
defencoding big5
最後在 .bashrc
加入 alias 就大功完成啦:
alias bs2="if ! screen -rD BS2 >& /dev/null ; then LANG='zh_TW.UTF-8' screen -S BS2 -c $HOME/screenrc-bbs/bs2 ; fi"
alias ptt="if ! screen -rD PTT1 >& /dev/null ; then LANG='zh_TW.UTF-8' screen -S PTT1 -c $HOME/screenrc-bbs/ptt ; fi"
alias ptt2="if ! screen -rD PTT2 >& /dev/null ; then LANG='zh_TW.UTF-8' screen -S PTT2 -c $HOME/screenrc-bbs/ptt2 ; fi"
alias ptt3="if ! screen -rD PTT3 >& /dev/null ; then LANG='zh_TW.UTF-8' screen -S PTT3 -c $HOME/screenrc-bbs/ptt3 ; fi"
如此一來,下次登入時只要直接打 ptt
就可以開始逛版了,要離開則按 Ctrl-A Ctrl-D
,只要沒有被斷線的話隨時登入工作站都可以下 ptt
指令重回之前的進度。