PuTTYを使用して、学校のホストにリモートでログオンしています。ログインすると、次の手順を実行する必要があります。
今学期中にこのホストに何度もログインし、上記の手順の冗長性を排除するスクリプトを作成したいと考えていました。スクリプトにパスワードを含めることの明らかなセキュリティの見落としを無視して、これをどのように達成しますか?スクリプティングの経験がないので、あなたのフィードバックは大歓迎です。ありがとう!
編集:PuTTYのコマンドラインオプションをいじってみたところ、以下を使用して手順1〜2をバイパスできました。
PuTTY -load "Host" -l username -pw password
次のようなシェルファイルも作成しました。
#!/bin/bash
add Oracle10g
sqlplus username password
-mオプションを使用してこのオプションをコマンドラインに追加しようとすると、PuTTYがホストにログインしてすぐに終了するようです。シェルファイルの実行後にセッションを開いたままにする方法はありますか?-mオプションを誤って使用していますか?以下は、私がフォローしているPuTTYガイドへのリンクです。 http://the.earth.li/~sgtatham/PuTTY/0.60/htmldoc/Chapter3.html 。
コマンドラインから実行しようとしているコマンドは次のとおりです。
PuTTY -load "Host" -l username -pw password -m c:\test.sh
友人の助けを借りてこれを理解しました。 -m
PuTTYオプションは、シェルファイルを実行した直後にセッションを終了します。私が代わりにしたことは、PuTTY.bat
というバッチスクリプトを作成し、これらのコンテンツをWindowsマシンで使用することです。
@echo off
PuTTY -load "Host" -l username -pw password
これにより、Linuxホストにリモートでログインできます。ホスト側で、次の内容のsql
というシェルファイルを作成しました。
#!/bin/tcsh
add Oracle10g
sqlplus username password
私のホストのLinuxビルドはtcsh
を使用しました。他のLinuxビルドではbash
を使用する可能性があるため、tcshをbashに置き換えるだけで問題ありません。
要約すると、これらの手順の自動化は、2つの簡単な手順で実行されます。
PuTTY.bat
をダブルクリックします。これによりPuTTYが開き、ホストにログインします。tcsh sql
を実行します。これにより、Oracleツールがホストに追加され、sqlデータベースにログインされます。元の投稿者が、サーバー側にログインするたびにコマンドを自動的に実行するシェルプロファイル(bashrc、.tcshrcなど)を設定することを以前の回答が示唆していない理由はわかりません。
助けを求めてこのページに私を導いた探求は少し異なっていました-私は異なる起動コマンドを実行する同じホストのための複数のPuTTYショートカットが欲しかったです。
私は2つのソリューションを思い付きましたが、どちらも機能しました:
(背景)さまざまなPuTTYショートカットを含むフォルダーがあり、それぞれにショートカットタブの「ターゲット」プロパティがあります。
"C:\Program Files (x86)\PuTTY\putty.exe" -load Host01
保存したPuTTYプロファイルに対応する各負荷([セッション]タブの異なるホストを使用)。 (ほとんどの場合、配色が異なるだけです。関連するタスクの各グループにターミナルウィンドウで配色を共有させ、本番システムにrootとしてログインするなどの重要なタスクを、明確に色付けされたウィンドウでのみ実行するようにします。)
フォルダーの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を再起動する必要があります。
(solution 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、未試行)
また、bashに.bashrcをスキップさせ、PuTTY SSHコマンドフィールドに次のように入力することにより、別の起動スクリプトを実行することも可能です。
bash --rcfile .bashrc_variant -l
-m
オプションを使用すると、PuTTYはttyを割り当てず、コマンドを実行して終了します。対話型スクリプト(SQLクライアントなど)を実行する場合は、-t
でttyを割り当てるように指示する必要があります。3.8.3.12 -t and -T: control pseudo-terminal allocation
を参照してください。サーバーにスクリプトを保持したり、接続後にスクリプトを起動したりする必要はありません。
バッチファイルからmysqlに接続するために使用しているものは次のとおりです。
#mysql.bat start PuTTY -t -load "sessionname" -l username -pw password -m c:\mysql.sh
#mysql.sh mysql -h localhost -u username --password="foo" mydb
https://superuser.com/questions/587629/PuTTY-run-a-remote-command-after-login-keep-the-Shell-running
これらの要件の一般的な解決策を提案したいと思います。多分それはあなたのための使用です: AutoIt 。このプログラムを使用すると、PuTTYなどのウィンドウの上部にスクリプトを記述し、必要なすべてのコマンドを実行できます(テキストボックスまたはボタンでボタンを押す、またはマウスをクリックするなど)。
このようにして、常にPuTTYで実行しているすべての手順をエミュレートできます。
mputtyはそれを実行できますが、常に機能するとは限りません。 (その待機時間が遅すぎる場合)
mputtyはPuTTYを使用し、PuTTYを拡張します。スクリプトを実行するオプションがあります。動作しない場合は、入力するまでの待機時間が高い値であることを確認するか、その値を増やします。 PuTTYセッション、セッションの名前、マウスの右ボタン、プロパティ/スクリプトページを参照してください。
ログイン後にコマンドを入力するには、PuTTYの下部にあるSSHセクションを使用します。2つのコマンドをで区切るオプションのリモートコマンド(サーバーに送信するデータ)が必要です。