sftp

寒くなると同時に、空気が乾燥してきた。そのせいか、女房が加湿器を欲しいとぬかす。

眼が乾燥して霞んでくる、お肌が乾燥してぱさぱさになると言う。自分でどんなのが 売れ筋か調べていた。価格.comの評価はやらせっぽいのが混じっているから、余り 信用出来ないんだよねとか、いっちょ前な事を言ってる。

で、どうやら絞り込みが終わったようで、買い物に駆り出された。ペットボトルを 貯水タンクにしたのが良いらしい。

500mlの香り付炭酸水が入ったペットボトルも一緒に購入。炭酸が入ったボトルは 丈夫なんで、長持ちするそうな。そんな体験談も載ってるのか。こういう事は、やらせ屋 は書かないだろうから、素直な消費者の感想なんだろうな。

500mlを頑張って、消費させられた。ビールなら幾らでも飲めるのに、炭酸水だけって のは、きついね。げっぷが出る事、出る事。

1時間に200mlの水を蒸気に変えるそうな。あっという間に、ボトルが空になるよ。 ほいほい蒸発させてたら、窓ガラスに水滴が付いて、しょうがないだろうに。

それにランニングコストが、150W/時らしい。電熱器が入ってますからねぇ。 超音波式の方が良かったんでは? どうもそこまでは頭が回らなかったらしい。

そんなチマチマした事を言うんなら、たばこ止めたら。一本幾らするのよ? 金払って、体を痛めつけてる人に、そんな事を言われる筋合いは無い。 私は、美容と美貌の為に頑張っているんだから。どうやら、女房の方が一枚上手でした。

MobaXtermの便利な所

nkfが有るかと思って探してみたけど、無かった。それで使い慣れているやつを入れておく。

[sakae.atom] ➤ apt-cyg install lv
Found package lv

Installing lv
Downloading lv-4.51-1.tar.bz2...
Unpacking lv-4.51-1.tar.bz2...
Extracting dependencies for usr/bin/lv.exe...
Extracting dependencies for usr/bin/lgrep.exe...
Package lv requires the following packages, installing cygwin
Package cygwin is already installed, skipping
Package lv installed.

Rebasing new libraries

sftpで、Downloadは、リモート側からWindows側へファイルなりを持ってくる。 アイコンをクリックすると、Windows側の何処に配置させるかの質問が出てくる。

もっと直接的に、ファイルを掴んで、sftpのフォルダーから出す(Download相当)あるいは、 入れる(Upload相当)操作をすれば簡単でよい。

また、stfp内のファイルをダブルクリックすれば、MobaXtermに備え付けの Editorが起動する。これ、なかなか気が利いてるな。フォントを日本語に設定すれば ちゃんとインライン入力も含めて日本語おk。但し、再起動すると、設定情報を 忘れてしまう健忘症の症状が有る。真面目に使うなら有償版にしろって事ですな。

この操作ってよく考えたら、sftpの窓をファイルブラウザー替わりに使って、 リモート編集した事になる。そんな危ないまねをしたく無かったら(オイラーの事です) 、窓を閉じて封印しておけばよい。

嗚呼、nkfが欲しかったのは、文字コード変換器が有れば安心ってのと、行末を Windows用/unix用に指定出来るからです。Windows付属のメモ帳はutfで保存 出来るようになっていたけど、unix式の行末には残念ながら対応してませんから。

行末変換だったら、unix2dosが標準で入っているわい。これを使えば、メモ帳で 開いても、ちゃんと見られるファイルになりそう。

検証してみる。Debianでmanファイルをテキスト化。それをsftpでWindows側に 持ってきた。まずは、性格テストだなと思って、fileすると

[sakae.atom] ➤ file nkf.txt
Sorry: file is not included in this version of MobaXterm.

    You can check online if you find a file plugin for MobaXterm
    by ctrl+clicking here: http://mobaxterm.mobatek.net

    You can also try to install file directly
    by using the apt-get install file command

    If you need a custom version of MobaXterm that includes file,
    do not hesitate to ask us for a quotation: mailto:contact@mobatek.net

ちみが謝る事はないんだよ。オイラーが無理言っただけだからね。

[sakae.atom] ➤ file nkf.txt
nkf.txt: UTF-8 Unicode text
[sakae.atom] ➤ unix2dos nkf.txt
[sakae.atom] ➤ file nkf.txt
nkf.txt: UTF-8 Unicode text, with CRLF line terminators

ホー、どうやら、mobaXtermの中は、unixと思って宜しいとな。そして行末変換すると 余計なCRLFが付いてるよ、と報告してきた。この状態のファイルを、メモ帳で開くと 文字化けする事なく、正しく表示された。

行末変換には逆の動作のdos2unixも有るので、これを使えば、メモ帳を物書き用に 使えるな。

sftp-server

上のsftpなんだけど、リモート側のunixでsftp-serverが動いていないと、ファイルの やり取りは出来ないはず。その辺はどうなっているんだろう?

この際だから調べてみるか。題材はOpenBSDにしました。PuTTYとmobaXtermから sshし、pstreeしたのが下記。initの子供として、15370の親SSHDが居ます。

PuTTYから接続したら、特権分離で82327のsshdが生まれ、その元でttyp0を介して PuTTYに接続されました。そのbashからpstreeを実行。

一方、mobaXtermからの方は、88837のsshd経由でttyp3を介して繋がりました。

親SSHDの子としてsfte-serverも生成されてます。

 |-+= 15370 root /usr/sbin/sshd
 | |-+= 82327 root sshd: sakae [priv] (sshd)
 | | \-+- 13551 sakae sshd: sakae@ttyp0 (sshd)
 | |   \-+= 55459 sakae -bash (bash)
 | |     \-+= 80330 sakae pstree
 | |       \-+- 32393 sakae sh -c ps -kaxwwo user,pid,ppid,pgid,command
 | |         \--- 60699 sakae ps -kaxwwo user
 | |-+= 88837 root sshd: sakae [priv] (sshd)
 | | \-+- 61094 sakae sshd: sakae@ttyp3 (sshd)
 | |   \--= 35839 sakae -bash (bash)
 | \-+= 20874 root sshd: sakae [priv] (sshd)
 |   \-+- 60028 sakae sshd: sakae@notty (sshd)
 |     \--= 70362 sakae /usr/libexec/sftp-server

mobaXtermを終了すると、88837系が消えるのは勿論の事、20874系のsftp-serverも居なく なりました。どうやら連動してるみたいです。

sshdが親分なんで、関係有りそうな所を調べてみます。

[ob: ssh]$ grep sftp /etc/ssh/sshd_config
Subsystem       sftp    /usr/libexec/sftp-server

有りましたね。おまけと言ったら失礼かな。sshdが動いている所にsftpも待ち構えて いる。(設定を殺していない限り)

だから、mobaXtermの特例と言う訳ではなく、mobaXtermでリモートに接続すると 同時に、sftpでも接続して、そのまま放置の繋ぎっぱなしなんだな。 PuTTYでやってみる。

[ob: ssh]$ sftp localhost
sakae@localhost's password:
Connected to localhost.
sftp>

コマンド待ちの状態時に、pstreeすると、接続状態が確認出来、サーバーが起き上がった 事も見て取れる。

 |-+= 15370 root /usr/sbin/sshd
 | |-+= 82327 root sshd: sakae [priv] (sshd)
 | | \-+- 13551 sakae sshd: sakae@ttyp0 (sshd)
 | |   \-+= 55459 sakae -bash (bash)
 | |     \-+= 15452 sakae screen -U
 | |       \-+= 04753 sakae SCREEN -U (screen)
 | |         |-+= 38203 sakae -/usr/local/bin/bash
 | |         | \-+= 38844 sakae sftp localhost
 | |         |   \--- 23975 sakae /usr/bin/ssh -oForwardX11 no -oForwardAgent n
 | |         \-+= 89200 sakae -/usr/local/bin/bash
 | |           \-+= 73452 sakae pstree
 | |             \-+- 13177 sakae sh -c ps -kaxwwo user,pid,ppid,pgid,command
 | |               \--- 71093 sakae ps -kaxwwo user
 | \-+= 09190 root sshd: sakae [priv] (sshd)
 |   \-+- 19533 sakae sshd: sakae@notty (sshd)
 |     \--= 86464 sakae /usr/libexec/sftp-server

なるほどね。便利な仕組みが分かったよ。折角なのでもう少し深追い。sftpコマンドが 下記のように展開されてる模様。

sftp localhost
/usr/bin/ssh -oForwardX11 no -oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -oProtoc

これの何処がsftpなんじゃいと言う疑問。Protocは途中で切れてしまっているけど、-oの 所に正式名が載ってた。そしてそのオプションは、ssh1かssh2かの指定。 そして、まだ引数表示が続いていると予想される。sshの安全路を使うのは分かるんだけど 、肝心のsftpサーバーを起動するオプション -sが渡されていない。

だったら、-sを付ければいいじゃん。実際にやってみると、使い方を指導されるだけで どうも、案内に抜けがある模様。

こうなると、sftpの中身を見たくなる。ソースはsshの下にsftp.cって名前で登録されてた。

                /* no subsystem if the server-spec contains a '/' */
                if (sftp_server == NULL || strchr(sftp_server, '/') == NULL)
                        addargs(&args, "-s");

                addargs(&args, "--");
                addargs(&args, "%s", host);
                addargs(&args, "%s", (sftp_server != NULL ?
                    sftp_server : "sftp"));

                connect_to_server(ssh_program, args.list, &in, &out);

この通りに、コマンドを叩けばいいんだな。

[ob: ~]$ ssh -s localhost
You must specify a subsystem to invoke.
[ob: ~]$ ssh -s -- localhost sftp
sakae@localhost's password:

裸の接続なんで、親切なプロンプトなんて表示されないけど、下記のように、ちゃんと サーバーが起動している事が確認出来たよ。持つべきものは友人とソースだね。

 | |         \-+= 80562 sakae -/usr/local/bin/bash
 | |           \--= 61103 sakae ssh -s -- localhost sftp
 | \-+= 31912 root sshd: sakae [priv] (sshd)
 |   \-+- 37190 sakae sshd: sakae@notty (sshd)
 |     \--= 42386 sakae /usr/libexec/sftp-server

長いコマンドラインが切れてしまっているので、特製psを使って、コマンドラインを全て 表示させてみる。ビンゴでしたよ。

[ob: ~]$ ps -kaxwwo command
  :
/usr/bin/ssh -oForwardX11 no -oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -oProtocol 2 -s -- localhost sftp
sftp localhost

Linuxで長いコマンドラインを全て表示させる特製psは、どんな風にすればいいの? そんな事考えるの無駄。cat /proc/pid/cmdline ; echo ぐらいで良いのかな。

新環境で何をやるか

Debianにgoでも入れて、Firefoxをキャンバスにしてグラフでも書いてみるかな。

Firefoxを入れようとしたら、それは細かいパッケージになりましたって言われた。 firefox-esr-xxx で、xxxの部分が日本語だったりする訳。英語がデフォなんで、 xxxは付かない。入れたら、45相当の物がやってきた。esr版って、もしかしたら 長期サポート版の事かな。

キャンバスとして使うなら、余り頻繁にアップデートしなくても良いので、落ち着いて いて良さそう。

次はgolang-go。入れたら、1.3.3がやってきた。ちと古いな。本家に行って、 最新版のLinux用を頂いてきた。どんなデストリにも対応出来るように、tar.gzに なってた。goってのがTopDirになってるんで、好きな所に展開してPATHを通してね って事だ。オイラーは、/usr/localの下に置いて、

PATH=/usr/local/go/bin:$PATH
export GOPATH=/home/sakae/godev

こんな設定をしておいた。新しいgoが出ても、dir毎挿げ替えるだけで良い。 こういうパッケージ管理も楽で良いな。

sakae@debian:~$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/sakae/godev"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build447549150=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"

goは軽くて使い勝手が良さそうなので、思い余ってWindows10にも入れようと思ったけど、 止めた。だって本格的にやろうとすると、どうしてもgccが必要になる。そのgccもWindows10 上で動くやつって事で、際限なく入れるものが増えそうだから。

unix主体で開発されてる物は、仮想環境へ押し込めておくのが良さそう。

Fedora scientific

MaximaとかOctaveは名前を聞いた事があるけど、Kile のようなタイプ設定ツール、 Inkscape のようなグラフィカルプログラムは、初耳だなあ。

Welcome to the Fedora Scientific 23 Guideが、道標になるのかな。

clojureを入れたんだけど、版がちと古い。新しいのにしておくかな。エクリプスって 名前だけカッコよいJavaの開発環境も入ってるけど、相変わらずノロマですよ。 気が向いたら、走らせてみるかな。

Windows 10での開発環境

ウブ何とかが非常に流行っているようだけど、何度も言うけど、今の所ウブしか 入らないロックイン環境じゃん。そんなのイヤダって時は、上で挙げたmobaXtermが 定番かと(勝手に)思う。

でも、セカンドオピニオンしておこう。世の中には、 (VirtualBox+RLogin+VcXsrv)と言う、初めて聞く組み合わせも有るとな。

Windows上でX-Windowアプリを表示するためのXサーバ VcXsrvなんて言う、Xmingに代わるXサーバーを使っているのが味噌かな。

なかなか面白い。

FreeBSD upgrade

世の中、待望のFreeBSD 11.0-RELESEが公開されたってんで、某所では沸き返っている ようです。オイラーも早速、Windows10機に入れると思うでしょう。

今回は見送って、代わりにNetBSDを入れておく積り。その代わり、Windows7機に 入れてある、10.2をupgradeしておこう。

だって、10.2は、そろそろEOLになるんで、乗り換えはお早目にって案内が有ったから。

freebsd-update upgrade -r 10.3-RELEASE
freebsd-update install
shutdown -r now
 :
freebsd-update install

システム系のupgradeが終わったら、pkg系も更新しておく。

pkg-static install -fy pkg
pkg upgrade -y
freebsd-update install
shutdown -r now

待望のemacs25.1がやってきたけど、オイラーには余り御利益無さそうだなあ。

386BSD

フリーOSの元祖、386BSDが22年ぶりに更新

これが順調に公開されていたら、今の世の中にLinuxは存在しなかったかも? 歴史に if は 無し。物理学者の言い分を信じれば、パラレルワールドで、無限の分岐をした宇宙が有る そうな。但し、誰もそれを証明出来ない。