TeraTermの仕様では;以降の引数はコメントですが、TeraTerm本体はコメントとして扱うのにTTSSHはコメントとして扱わない、というバグがありました。#34353
このチケットで指摘されている書式はTeraTermの引数の仕様に沿わないものでしたが、上記のバグがあったために使えていた書式でした。
今回のバージョンで上記のバグを修正したため、いままで使えていた;で複数のポート転送を指定する書式が使えなくなりました。
下記のように指定すればどちらのポート転送設定も読み込まれます。
/ssh-L8081:localhost:8081 /ssh-L8082:localhost:8082
次のバージョンでは、;を使わずに複数の指定を同時に指定できるように考えます。
案) /ssh-L8081:localhost:8081,L8082:localhost:8082
スイッチ自体を複数記述する形式で動作OKでした。ありがとうございました。
/ssh-L8081:localhost:8081 /ssh-L8082:localhost:8082
なお teratermメニュー>設定>SSH転送 の設定を保存した場合、teraterm.iniに下記エントリが作成されます。
DefaultForwarding=L8081:localhost:8081;L8082:localhost:8082
もしかしたら影響ありそうなので報告しました。
maya への返信
次のバージョンでは、;を使わずに複数の指定を同時に指定できるように考えます。
案) /ssh-L8081:localhost:8081,L8082:localhost:8082
自分の感覚としては上記は /ssh-L オプションに 8081:localhost:8081 と L8082:localhost:8082 の二つのパラメータが指定されていると感じるのでちょっと不自然に思います。
これを L8081:localhost:8081 と L8082:localhost:8082 の二つと解釈した場合、/ssh- に与えている事になるので /ssh-L8081:localhost:8081,A 等が許されそうなのでやはり不自然だと思います。
それよりはちょっと手間がかかりますが /ssh-L8081:localhost:8081,8082:localhost:8082 の方がいいと思います。
ttssh 2.72 まで使えてしまっていた /ssh-L8081:localhost:8081;X;R8082:localhost:8082 のような複数の種類の転送を指定出来なくなりますが、 /ssh-X;L8081~ 等は使えなく一貫性が無いのでサポートする必要は無いと思います。
このコマンドライン引数はTERATERM.INIのDefaultForwardingを読み込んだ変数を上書きし、解析処理に行きます。
シンプルに、読み込みは ; を待つところを ; or , にし、書き込みは ; のところを , に変更するつもりでいましたが、コマンドライン引数のみ?構文変更するとなるとやや手間に感じますが、いかがでしょうか。
,区切りを受け付けるようにしました。
http://ttssh2.osdn.jp/snapshot/snapshot-20150712.zip
ところで、本件の記法はマニュアルに書いていないものですが、TERATERM.INI に保存された設定値をコマンドラインにも使えると思って持ってきたのでしょうか?
TERATERM.INI に保存された設定値をコマンドラインにも使えると思って持ってきたのでしょうか?
はい。
logmettマクロのconnect接続文字列で複数ポートを転送する設定方法を探していて、 TERATERM.INIに保存されている形式なら使えるかな?と思って、 試してみたら使えた、という感じです。
* INIファイルに保存されている複数種類の同時指定は引き続きサポートする必要があります。 * 互換性保持のため、INIファイルから読み込まれた ; で分割した複数種類の同時指定は、読み込みのみサポートしたいです。
INIファイルの読み書きに対する変更は考えていませんでした。変更を考えていたのはコマンドラインパラメータの解釈部分だけです。
シンプルに、読み込みは ; を待つところを ; or , にし、書き込みは ; のところを , に変更するつもりでいましたが、コマンドライン引数のみ?構文変更するとなるとやや手間に感じますが、いかがでしょうか。
多少手間ではあるのですが、やはり一貫性の無さが気持ち悪いです。 試しに r5959 で実装してみましたがどうでしょうか?
ありがとうございます。この変更があれば、 r5908 で入れた ;と,を入れ替える処理を取り除いても大丈夫になりますか?
INIへの保存の仕様が変わらないのであれば、そのほうがよいと思います。
ありがとうございます。この変更があれば、 r5908 で入れた ;と,を入れ替える処理を取り除いても大丈夫になりますか?
修正はTTXParseParamだけで完結するようにしていますので、INIへの読み書き部分は元に戻しても大丈夫なはずです。
修正はTTXParseParamだけで完結するようにしていますので、INIへの読み書き部分は元に戻しても大丈夫なはずです。
r5960 で戻しました。
teraterm4.88で試してみました。
/ssh-L8081:localhost:8081;L8082:localhost:8082
結局のところ、この形式はサポートしない、ということで完了済でしょうか?
コマンドラインにおいて ; で区切る形式はサポートされません。また、Lを複数書くのもサポートされなくなりましたので、以下のようになります。
/ssh-L8081:localhost:8081,8082:localhost:8082
http://ttssh2.osdn.jp/manual/ja/commandline/ttssh.html#ssh-l
tetaterm接続マクロで、/ssh-Lに複数ポートを設定して利用していました。
version4.86
これが version4.87 では挙動が変わり、最初の一つしか有効になりません。
例ではL8081は有効だがL8082は設定されない。