10

私はPuTTYを使用して、学校のホストにリモートでログオンしています。ログイン時に、次の手順を実行する必要があります。

  1. ユーザーネームを入力してください
  2. パスワードを入力する
  3. コマンド「addoracle」
  4. コマンド「sqlplus」
  5. ユーザーネームを入力してください
  6. パスワードを入力する

私は今学期中にこのホストに何度もログインし、上記の手順の冗長性を排除するスクリプトを作成したいと考えていました。スクリプトにパスワードを含めることによる明らかなセキュリティの見落としを無視すると、これをどのように達成できますか?私はスクリプトの経験がないので、フィードバックをいただければ幸いです。ありがとう!

編集: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
4

8 に答える 8

8

友人の助けを借りてこれを理解しました。PuTTYオプションは-m、シェルファイルを実行した直後にセッションを終了します。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つの簡単なステップで実行されるようになりました。

  1. をダブルクリックしますputty.bat。これにより、PuTTYが開き、ホストにログインします。
  2. コマンドを実行しますtcsh sql。これにより、Oracleツールがホストに追加され、SQLデータベースにログインします。
于 2013-01-12T04:17:10.267 に答える
6

以前の回答で、元の投稿者がサーバー側にログインするたびにコマンドを自動的に実行するシェルプロファイル(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 
于 2014-11-13T02:54:02.000 に答える
2

オプションを使用すると、-mputtyはttyを割り当てず、コマンドを実行して終了します。対話型スクリプト(SQLクライアントなど)を実行する場合は、でttyを割り当てるように指示する必要があります。-tを参照してください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

于 2014-03-04T15:12:44.103 に答える
0

私はそれらの要件のための一般的な解決策を提案したいと思います、多分それはあなたのための使用です:AutoIt。このプログラムを使用すると、Puttyなどのウィンドウの上にスクリプトを記述して、必要なすべてのコマンドを実行できます(ボタンを押す、テキストボックスやボタンをマウスでクリックするなど)。

このようにして、Puttyで常に行っているすべてのステップをエミュレートできます。

于 2013-01-11T01:00:29.390 に答える
0

ログイン後にコマンドを入力するには、パテの下部にあるSSHセクションを使用します。リモートコマンド(サーバーに送信するデータ)オプションを使用して、2つのコマンドを;で区切る必要があります。

于 2013-06-22T18:33:26.653 に答える
0

mputtyはそれを行うことができますが、常に機能するとは限りません。(その待機期間が遅すぎる場合)

mputtyはパテを使用し、パテを拡張します。スクリプトを実行するオプションがあります。それが機能しない場合は、入力する前の待機時間が高い値であることを確認するか、その値を増やしてください。パテセッション、次にセッション名、マウスの右ボタン、プロパティ/スクリプトページを参照してください。

于 2014-03-06T14:13:28.870 に答える
0

私にとっては、次のように機能します。

putty -ssh root@1.1.1.1 22 -pw password

パテ、プロトコル、ユーザー名@IPアドレスポートとパスワード。1秒以内に接続します。

于 2020-04-27T06:05:34.280 に答える
-1

-i privatekeyfilelocationパスワードベースの代わりに秘密鍵を使用している場合に使用できます。

于 2014-02-11T14:28:03.493 に答える