Ticket #31971

TTProxy が半角スペースを含むコマンドラインオプションを認識しない

Date d'ouverture: 2013-09-02 13:46 Dernière mise à jour: 2014-02-24 13:24

Rapporteur:
Propriétaire:
(del#1144)
Type:
État:
Atteints
Composant:
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
Aucun
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

TeraTerm Ver.4.75を利用しております。

マクロでconnectコマンドを利用する際、 /Fオプションや/keyfileオプションで指定するファイルパスに半角スペースが入っていると コマンドが失敗してしまいます。

半角スペース(もしくは他の特殊文字も含めて)が混入していても connectコマンドで接続できるようにして頂けないでしょうか。

Ticket History (3/19 Histories)

2013-09-02 13:46 Updated by: rtabata
  • New Ticket "connectコマンドのオプションに半角スペースがあると接続されない" created
2013-09-02 14:24 Updated by: doda
  • Propriétaire Update from (Aucun) to doda
Commentaire
connect 'host /F="C:\Some Where\TERATERM.INI"'

というように、ファイル名を""で括ってください。

2013-09-02 16:00 Updated by: rtabata
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2013-09-02 16:00
Commentaire

お世話になっております。

""で括ると接続できました。 ありがとうございました。

2014-01-09 18:42 Updated by: rtabata
  • État Update from Atteints to Ouvert
Commentaire

connectコマンドのオプション/Fでは ファイル名を""で括ると半角スペースが存在していても接続できましたが、 オプション/keyfileではうまくいきません。

/keyfileで半角スペースを含むファイルパスは指定できないのでしょうか。

2014-01-09 19:48 Updated by: (del#1144)
  • Priorité Update from 9 - le plus élevé to 5 - moyen
Commentaire

確認しましたが、手元ではうまく動いています。

秘密鍵ファイルをパスにスペースを含まない場所に置いたらうまくいくのですか?

2014-01-09 19:48 Updated by: (del#1144)
  • Résolution Update from Aucun to Works For Me
2014-01-10 11:34 Updated by: rtabata
Commentaire

調査の結果、現状では以下の事項が確認できています。

 □環境:Teraterm Ver4.80 利用PC:Win7 SP1  ・秘密鍵ファイル(A)をスペースを含まないパスに指定した場合は正常に接続できた。  ・秘密鍵ファイル(B)をスペースを含むパスに指定した場合は正常に接続できた。

ただ、秘密鍵ファイル(A)を指定するマクロ(A)で使うiniファイル(A)と 秘密鍵ファイル(B)を指定するマクロ(B)で使うiniファイル(B)には プロキシの設定があるかないかの違いがあります。

・iniファイル(A)  →プロキシ設定あり。    TTProxy    ConnectionTimeout="10"    SocksResolve="auto"    TelnetHostnamePrompt=">> Host name: "    TelnetUsernamePrompt="Username:"    TelnetPasswordPrompt="Password:"    TelnetConnectedMessage="-- Connected to "    TelnetErrorMessage="!!!!!!!!"    ProxyType="http"    ProxyHost="proxyXXX.XXX.XXX.co.jp"    ProxyPort="8080"

・iniファイル(B)  →プロキシ設定なし。

また、iniファイル(A)、(B)ともにsshポート転送の設定が入っていますが、 こちらは接続できてもできなくても設定の読み込みは正常に行われているように見受けられます。

マクロ(A)は半角スペースを含まないパスをiniファイル(A)、秘密鍵ファイル(A)共に指定した場合、 正常に接続されますが、 半角スペースを含むパスを指定するとプロキシの設定だけ?が読み込まれておらず、 今回の事象に至っています。

プロキシ設定の読み込まれ方に何か制限があるのでしょうか。

2014-01-10 13:52 Updated by: rtabata
Commentaire

補足情報です。 以下の①ではプロキシ設定が正常に読み込まれましたが、②では読み込まれませんでした。 また、②で読み込まれない事を確認後、メニューから同じ設定ファイルを手動で読み込むと、 プロキシ設定が読み込まれました。

※最終的には /Fオプションのファイルパスは予め変数に格納しておき、  ファイルパスにスペースがあってもなくてもプロキシ設定を読み込んだ上で  接続できるようにしたいです。

※マクロファイルはD:\WINDOWS\TTL\test2\にあります。

①マクロ(A):プロキシ設定読み込み可能-------------------------------- path = 'D:\WINDOWS\TTL\test2\01ini' INI = 'TERATERM.INI'

makepath INIPATH path INI

cmd = 'XXX.XXX.XXX.XXX:22 /ssh /auth=passwd /user=root /passwd=XXXXX' strconcat cmd ' /F=' strconcat cmd INIPATH

connect cmd

②マクロ(A):プロキシ設定読み込み不可-------------------------------- path = 'D:\WINDOWS\TTL\test2\01ini' INI = 'TERATERM.INI'

makepath INIPATH path INI

cmd = 'XXX.XXX.XXX.XXX:22 /ssh /auth=passwd /user=root /passwd=XXXXX' strconcat cmd ' /F="' strconcat cmd INIPATH strconcat cmd '"'

connect cmd

2014-01-10 17:09 Updated by: (del#1144)
  • Composant Update from Tera Term Macro to Other
  • Type Update from Demandes de fonctionnalités to Bogues
  • Résolution Update from Works For Me to Accepted
  • Jalon Update from (Aucun) to Tera Term 4.81 (atteints)
Commentaire

「/F=オプションでINIファイル名をダブルクォーテーションではさんでいると、TTProxyオプションが読み込まれない」ことを確認しました。

これ以外に問題がありますか?

2014-01-10 17:13 Updated by: rtabata
Commentaire

現状では「/F=オプションでINIファイル名をダブルクォーテーションではさんでいると、TTProxyオプションが読み込まれない」 以外の問題はありません。

2014-02-18 08:08 Updated by: (del#1144)
  • Summary Updated
  • Propriétaire Update from doda to maya
  • Résolution Update from Accepted to Fixed
Commentaire

修正版を作成しました。これで認識するでしょうか。

http://ttssh2.sourceforge.jp/snapshot/snapshot-20140218.zip

2014-02-19 19:24 Updated by: rtabata
Commentaire

修正版で試してみましたが、認識できませんでした。 現象変わらずでTTProxyオプションだけが認識されていません。

ちなみにスペースを含む文字列を変数に格納するときは と "" とで特に違いや制限はないと思っていますが間違いないですか。

2014-02-20 00:53 Updated by: (del#1144)
Commentaire

スペースを変数に含めるとき、シングルクォートとダブルクォートで特に違いはないと思います。

メモリの初期化漏れがあったため、修正しました。これではどうでしょうか。

http://ttssh2.sourceforge.jp/snapshot/snapshot-20140220.zip

2014-02-24 09:30 Updated by: rtabata
Commentaire

修正版で試してみましたが、改善されませんでした。 今回はTeratermのiniファイルも認識していないように見受けられます。

2014-02-24 10:41 Updated by: (del#1144)
Commentaire

TTProxy が引数を受け取る部分の問題か、マクロの connect コマンドが引数の受け取る部分の問題か確かめるため、以下の2種類の方法で確認しましたがどちらでも反映されました。


INIファイルを次のように変更したものを、フォルダ名にスペースを含んだ場所に置き、INIファイルを引数に渡して起動しました。

[Tera Term]
; すぐわかるように適当に変更
Title=Tera Term zzz
; 接続に失敗したあとに設定を確認できるように
AutoWinClose=off

; 念のためこのセクションも
[Host]
Host1=hoge

[TTProxy]
; デフォルトの10から確認用に変更
ConnectionTimeout=20
; TypeとHostの両方が設定されていないとNONEになる
ProxyType=http
ProxyHost=hoge


1)コマンドプロンプトから

ttermpro /F="Z:\a b\teraterm.ini"
とINIファイルを指定して実行する


2)このようなマクロを書き

connect 'hostname /F="Z:\a b\teraterm.ini"'
コマンドプロンプトから
ttpmacro hoge.ttl
とマクロファイルを指定して実行する


どのように確認しているのでしょうか。

2014-02-24 12:17 Updated by: rtabata
Commentaire

確認方法と結果を以下に記載します。 ttpmacroの③の結果から秘密鍵ファイルが読み込めていないように見受けられます。

■フォルダ構成 ※ini内と02 ini内は同じファイル D:\01TEST\01_MANAGE │ hoge.ttl │ ├─ini │ │ hoge.id_rsa │ │ TERATERM.INI │ │ │ └─02 ini │ hoge.id_rsa │ TERATERM.INI │ └─Log

■マクロ ;; 接続情報定義 ==================================

GW_HOSTNAME = 'huga.mydns.jp' GW_PORT = '10022' GW_USERNAME = 'huga' GW_PASSWORD = 'password' GW_INIFILE = 'TERATERM.INI' GW_KEYFILE = 'hoge.id_rsa'

;; ===============================================

cmd = GW_HOSTNAME strconcat cmd ':' strconcat cmd GW_PORT strconcat cmd ' /ssh /auth=publickey /user=' strconcat cmd GW_USERNAME strconcat cmd ' /passwd=' strconcat cmd GW_PASSWORD strconcat cmd ' /F=' strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI' strconcat cmd ' /keyfile=' strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa'

connect cmd

■ttermpro ・パスにスペース無し ttermpro /F="D:\01test\01_Manage\ini\TERATERM.ini" →○ ・パスにスペースあり ttermpro /F="D:\01test\01_Manage\ini\02 ini\TERATERM.ini" →○

■ttpmacro ①パスにスペース無し strconcat cmd ' /F=' strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI' strconcat cmd ' /keyfile=' strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa' →○

②パスにスペースあり strconcat cmd ' /F=' strconcat cmd 'D:\01test\01_Manage\ini\02 ini\TERATERM.INI' strconcat cmd ' /keyfile=' strconcat cmd 'D:\01test\01_Manage\ini\02 ini\hoge.id_rsa' →× 一瞬画面が表示されるがすぐ閉じる。

③iniファイル:スペース無し、秘密鍵:スペースあり strconcat cmd ' /F=' strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI' strconcat cmd ' /keyfile=' strconcat cmd 'D:\01test\01_Manage\ini\02 ini\hoge.id_rsa' →× iniファイルは読み込まれているが、タイトル:TTPROXY、メッセージ:h が表示される。                                    →直後にNewConnectionで接続を試みると、Private Key Fileの入力パスが「D:\01test\01_Manage\ini\02」となっていた。

④iniファイル:スペースあり、秘密鍵:スペース無し strconcat cmd ' /F=' strconcat cmd 'D:\01test\01_Manage\ini\02 ini\TERATERM.INI' →× 一瞬画面が表示されるがすぐ閉じる。 strconcat cmd ' /keyfile=' strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa'

2014-02-24 12:34 Updated by: (del#1144)
Commentaire

すみませんが、改行がなくなっているので、Wiki文法を使って改行が表示されるようにしてもらえると読みやすいです。

2,3,4 の書き方はどれも、INIファイル・秘密鍵ファイルにスペースを含んでいる場合にファイル名をダブルクォートでくくっていませんね。

2014-02-24 13:13 Updated by: rtabata
Commentaire

2,3,4 の書き方はどれも、INIファイル・秘密鍵ファイルにスペースを含んでいる場合にファイル名をダブルクォートでくくっていませんね。BR

→以下でスペースありでも接続する事ができました。お騒がせしました。BR  strconcat cmd ' /F='BR

strconcat cmd '"D:\01test\01_Manage\ini\02 ini\TERATERM.INI"'BR strconcat cmd ' /keyfile='BR strconcat cmd '"D:\01test\01_Manage\ini\02 ini\hoge.id_rsa"'BR

BR

※見づらくて申し訳ありません。BR  改行コードを追加しましたので一応載せておきます。BR

確認方法と結果を以下に記載します。BR

ttpmacroの③の結果から秘密鍵ファイルが読み込めていないように見受けられます。BR

BR

■フォルダ構成 ※ini内と02 ini内は同じファイルBR D:\01TEST\01_MANAGEBR

│ hoge.ttlBR │ ├─iniBR │ │ hoge.id_rsaBR │ │ TERATERM.INIBR │ │ │ └─02 iniBR │ hoge.id_rsaBR │ TERATERM.INIBRBR └─LogBR

BR

■マクロ ;; 接続情報定義 ==================================BR GW_HOSTNAME = 'huga.mydns.jp'BR

GW_PORT = '10022'BR GW_USERNAME = 'huga'BR GW_PASSWORD = 'password'BR GW_INIFILE = 'TERATERM.INI'BR GW_KEYFILE = 'hoge.id_rsa'BR

BR ;; ===============================================BR

cmd = GW_HOSTNAMEBR

strconcat cmd ':'BR strconcat cmd GW_PORTBR strconcat cmd ' /ssh /auth=publickey /user='BR strconcat cmd GW_USERNAMEBR strconcat cmd ' /passwd='BR strconcat cmd GW_PASSWORDBR strconcat cmd ' /F='BR strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI'BR strconcat cmd ' /keyfile='BR strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa'BR

BR connect cmdBR BR

■ttermproBR ・パスにスペース無し ttermpro /F="D:\01test\01_Manage\ini\TERATERM.ini" →○ BR ・パスにスペースあり ttermpro /F="D:\01test\01_Manage\ini\02 ini\TERATERM.ini" →○BR BR

■ttpmacroBR 1)パスにスペース無し BR strconcat cmd ' /F='BR

strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI'BR strconcat cmd ' /keyfile='BR strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa' →○BR

BR

2)パスにスペースあり BR strconcat cmd ' /F='BR

strconcat cmd 'D:\01test\01_Manage\ini\02 ini\TERATERM.INI'BR strconcat cmd ' /keyfile='BR strconcat cmd 'D:\01test\01_Manage\ini\02 ini\hoge.id_rsa' →× 一瞬画面が表示されるがすぐ閉じる。BR

BR

3)iniファイル:スペース無し、秘密鍵:スペースありBR

strconcat cmd ' /F='BR strconcat cmd 'D:\01test\01_Manage\ini\TERATERM.INI'BR strconcat cmd ' /keyfile='BR strconcat cmd 'D:\01test\01_Manage\ini\02 ini\hoge.id_rsa' →× iniファイルは読み込まれているが、タイトル:TTPROXY、メッセージ:h が表示される。                                    →直後にNewConnectionで接続を試みると、Private Key Fileの入力パスが「D:\01test\01_Manage\ini\02」となっていた。BR

BR

4)iniファイル:スペースあり、秘密鍵:スペース無しBR

strconcat cmd ' /F='BR strconcat cmd 'D:\01test\01_Manage\ini\02 ini\TERATERM.INI' →× 一瞬画面が表示されるがすぐ閉じる。BR strconcat cmd ' /keyfile='BR strconcat cmd 'D:\01test\01_Manage\ini\hoge.id_rsa'BR

BR

2014-02-24 13:24 Updated by: (del#1144)
  • Ticket Close date is changed to 2014-02-24 13:24
  • État Update from Ouvert to Atteints

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion