fslasht (3370) の日記

2002 年 04 月 26 日
午後 10:48

TELNETでログイン中セッションが切れてお困りの方に…

 Telnetでどこかに接続したまま放っておくと、いつの間にかセッションがきれていて悲しい思いをしますね。
 特にいくつもTelnetクライアントを立ち上げて作業していると、余り使っていないセッションが勝手に閉じていたり…

 無通信状態が一定時間続くとルータがセッションを切っているというケースが多いと思われます。
(自宅のルータがそういう仕様。LinuxのIPマスカレードもそんな感じだった。たぶん設定でなんとかなるんだろうけどどうやるんだろう)

 そこでバックグラウンドで実行しておくと、一定時間(30sec)毎にダミーの文字表示を行ってセッションが切れなくするツール?を作りました。(Unix,Linuxとか用)

■ ソース (kirema1000.c)

#include <stdio.h>
#include <unistd.h>

#define KIREMA 1000

int main() {
        int i;
        printf("sustainable session tool KIREMA1000 (by FSLASHT)\n");

        while (1) {
                sleep(30); // Wait 30 sec
                for ( int i=0; i<KIREMA; i++ ) putchar(0);
        }
        return 0;
}

■ コンパイル方法

gcc -o kirema1000 kirema1000.c

 コンパイルすると kirema1000 という実行バイナリができますので、ログイン先のマシンの実行パスに置いて下さい。

■ 実行方法

 Telnetでログインしたときに次のようにして実行します。

kirema1000 &

 ログインスクリプトに書いて置いてもよいとおもいます。

■ 停止方法

 ログアウトしても動き続けますので、たまに次のようにして kill してください。

killall kirema1000

■ 補足

 ソース見たまんまですが、30秒毎に文字コード0x00を1000バイト出力しています。
 1バイトではなく1000バイトも出力しているのは、(なにかの)バッファサイズ以上出力しないと送信されないことがあったためです。
 うまく動かないときは定数 KIREMA の値を増やして下さい。

 それよりもだれか、LinuxでIPマスカレードするときの無通信状態のタイムアウトの設定方法を教えて下さい(^^;

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

開いた括弧は必ず閉じる -- あるプログラマー

処理中...