strconcatで記号のコピー不可
以下のコードで確認しましたが、確認できませんでした。
COMMAND = "cmd:" PASSWORD = '!"#$%&' strconcat COMMAND PASSWORD messagebox COMMAND "" COMMAND = "cmd:" PASSWORD = "'()*+,-./" strconcat COMMAND PASSWORD messagebox COMMAND "" COMMAND = "cmd:" PASSWORD = ":;<=>?@" strconcat COMMAND PASSWORD messagebox COMMAND "" COMMAND = "cmd:" PASSWORD = "[\]^_`" strconcat COMMAND PASSWORD messagebox COMMAND "" COMMAND = "cmd:" PASSWORD = "{|}~" strconcat COMMAND PASSWORD messagebox COMMAND ""
再現する最短のコードを示して頂けますか?
現在の実装では記号で問題が出るのは考えにくいです。
問題が出る部分で
messagebox COMMAND "COMMAND"を実行して、期待通りにコピー出来たか、出来なければどこで切れるかを確認してもらえますか?
その後調査したところ、ダブルクオーテーションが入っているとエラーになることがわかりました。
※手動で入力した場合はログインできますが、以下のマクロでログインしようとするとエラーとなります。
※また、マクロ中でmessageboxを利用してコマンドラインを確認しましたが、特に問題は見受けられませんでした。
■エラー
--------------------------- TTSSH --------------------------- SSH2自動ログインエラー: ユーザー認証が失敗しました. --------------------------- OK ---------------------------
■マクロ
COMMAND = '192.168.56.103' strconcat COMMAND ':' strconcat COMMAND '22' strconcat COMMAND ' /ssh /auth=password /user=' strconcat COMMAND 'root' strconcat COMMAND ' /passwd=' strconcat COMMAND '!"#$%&' messagebox COMMAND "COMMAND" connect COMMAND
(匿名) への返信
その後調査したところ、ダブルクオーテーションが入っているとエラーになることがわかりました。
コマンドラインオプションのパラメータにダブルクォートを含める場合は、パラメータ全体を " で囲い、 ダブルクォートは、連続した二つのダブルクォート "" に置き換える必要があります。 https://ttssh2.osdn.jp/manual/ja/commandline/teraterm.html#note2
strconcat COMMAND ' /passwd=' strconcat COMMAND '!"#$%&'
この場合は /passwd="!""#$%&" となるようにする必要があります。
ありがとうございました。 問題は解決しましたので、本チケットはクローズでお願いします。
Tera Termを4.87から4.98にバージョンアップしたところ、strconcatにおいて、文字列に記号が含まれている場合に、正常にコピーが動作していないように思われる事象に遭遇した。 以下のようなマクロでパスワードをCOMMANDに埋め込んでいるが、記号が含まれていないパスワードの場合は正常に動作するが、記号が含まれていると一部のみがコピーされ、認証に失敗する。
strconcat COMMAND PASSWORD
ワークアラウンドとしてsprintf2を使うことで本事象を回避できることを確認済み。