以前の回答で、元の投稿者がサーバー側にログインするたびにコマンドを自動的に実行するシェルプロファイル(bashrc、.tcshrcなど)を設定することが提案されていない理由はわかりません。
ヘルプを求めてこのページにたどり着いたクエストは少し異なりました。同じホストに対して、異なる起動コマンドを実行する複数のPuTTYショートカットが必要でした。
私は2つの解決策を思いつきましたが、どちらもうまくいきました。
(背景)さまざまなPuTTYショートカットを含むフォルダーがあり、それぞれのショートカットタブの「target」プロパティは次のようになっています。
"C:\Program Files (x86)\PuTTY\putty.exe" -load host01
保存したPuTTYプロファイルに対応する各ロード([セッション]タブの異なるホストを使用)。(ほとんどの場合、配色のみが異なります。関連するタスクの各グループがターミナルウィンドウで配色を共有し、本番システムにルートとしてログインするなどの重要なタスクは、明確な色のウィンドウでのみ実行されるようにします。)
フォルダのWindowsプロパティは、非常にクリーンで削除された状態に設定されています。これは、頻繁に使用するリモートPuTTY接続とRDP接続のそれぞれにショートカットアイコンが付いた小さなコンソールとして機能します。
(解決策1)
他の回答で述べたように、-mスイッチはWindows側で実行するスクリプトを構成するために使用され、-tスイッチは接続を維持するために使用されますが、取得したい場合は順序に依存することがわかりました終了せずに実行する
たくさんの試行錯誤の末、ようやく仕事に取り掛かったのは次のとおりです。
(ショートカットターゲットフィールド):
"C:\Program Files (x86)\PuTTY\putty.exe" -t -load "SSH Proxy" -m "C:\Users\[me]\Documents\hello-world-bash.txt"
実行中のファイルは次のようになりました
echo "Hello, World!"
echo ""
export PUTTYVAR=PROXY
/usr/local/bin/bash
(セミコロンは必要ありません)
これにより、スクリプト化されたコマンドが実行され(私の場合は、ターミナルに「Hello、world」と出力されます)、リモートセッションが対話できる変数が設定されます。
デバッグに関する注意:PuTTYを実行すると、-mスクリプトがロードされます。スクリプトを編集する場合は、セッションを再開するだけでなく、PuTTYを再起動する必要があります。
(解決策2)
この方法は、頭脳がローカルのWindows側ではなくリモートのUnix側にあるため、非常にクリーンに感じられます。
Puttyマスターセッション(既存のセッションからの「設定の編集」ではない)から、保存された構成をロードし、SSHタブでリモートコマンドを次のように設定します。
export PUTTYVAR=GREEN; bash -l
次に、.bashrcに、その変数に基づいてさまざまなアクションを実行するセクションがあります。
case ${PUTTYVAR} in
"")
echo ""
;;
"PROXY")
# this is the session config with all the SSH tunnels defined in it
echo "";
echo "Special window just for holding tunnels open." ;
echo "";
PROMPT_COMMAND='echo -ne "\033]0;Proxy Session @master01\$\007"'
alias temppass="ssh keyholder.example.com makeonetimepassword"
alias | grep temppass
;;
"GREEN")
echo "";
echo "It's not easy being green"
;;
"GRAY")
echo ""
echo "The gray ghost"
;;
*)
echo "";
echo "Unknown PUTTYVAR setting ${PUTTYVAR}"
;;
esac
(解決策3、未試行)
これをPuTTYSSHコマンドフィールドに入力することで、bashに.bashrcをスキップさせ、別の起動スクリプトを実行させることも可能です。
bash --rcfile .bashrc_variant -l