SSHセッションを開いて同じ単一のコマンドを実行することがよくあります。パスワードを入力せずにログインするようにすべて設定しました(SSHキーベースの認証を使用)。WindowsでPuTTYまたは同様のプログラムをロードして起動するショートカットまたはバッチファイルを作成する方法があるかどうか疑問に思いました。コマンド(そして結果が良ければ終了するでしょう)。
SSHセッションを開いて同じ単一のコマンドを実行することがよくあります。パスワードを入力せずにログインするようにすべて設定しました(SSHキーベースの認証を使用)。WindowsでPuTTYまたは同様のプログラムをロードして起動するショートカットまたはバッチファイルを作成する方法があるかどうか疑問に思いました。コマンド(そして結果が良ければ終了するでしょう)。
回答:
コマンドラインのPuTTYバージョンplink.exe
を使用して、選択したホストへのSSH接続を開始します。使用する-ssh
SSHで接続するようにスイッチを。では-m
スイッチコマンド・ファイルを含めることができます。
plink.exe -ssh host1 -m C:\path\to\commands.txt
最後のステップはplink.exe
、必要なパラメータを含むショートカットを作成することです。
その他のさまざまなパラメーターについては、Plinkのドキュメントを確認してください 。Plink.exeのドキュメント
-ssh host1
対パテプロフィールに関するものuser@host
plink site command
PuTTYと同じ方法で実行できます(を除くcommand
)。PlinkとPuTTYには、基本的に同じコマンドラインオプションのセットがあります。
コマンドの実行を自動化するには、PuTTY自体ではなく、Plink(PuTTYパッケージから)を使用します。
Plinkはコマンドラインでコマンドを受け入れます。
plink.exe user@host command
PuTTYを使い続けたい場合は、-m
スイッチを使用してコマンドファイルを指定できます(Plinkは-m
スイッチもサポートしています)。
-i key
か-pw password
plink site command
PuTTYと同じ方法で実行できます(を除くcommand
)。PlinkとPuTTYには、基本的に同じコマンドラインオプションのセットがあります。
これを実現するには、パテ構成を使用できます。
パテをロードし、セッションを構成します。
ここで実行するリモートコマンドを入力します。
次に、[ 開く ]をクリックする前に、[ セッション ]タブ(上部)に戻り、構成を保存します。
次に、へのショートカットを作成しputty.exe
、-load
フラグを追加します。次に例を示します。
%PATH_TO_PUTTY%\putty.exe -load my_config
これで、ショートカットをクリックするだけでセッションが読み込まれ、コマンドが実行されます。
Windows 10を使用している場合、Microsoft がOpenSSHのベータ版(クライアントとサーバー)を持っていると報告されていることを知りたいと思うかもしれません。
[…]「オプション機能の管理」、「機能の追加」の順に進みます。次に、リストを下にスクロールして、WindowsのOpenSSHクライアント(ベータ)およびOpenSSHサーバー(ベータ)機能を見つけます。Windowsで別のリモートサービスを実行するという考えは困難な場合があるので、サーバーをインストールしたくない場合でも、私たちはあなたを責めません。
インストールしたら、コマンドラインを起動し、sshに続けてなどのコマンドを入力して、OpenSSHクライアントを使用できます
ssh ubuntu@someIP
。
ssh
Windows OpenSSHクライアントで取得している現在(2017年11月28日現在)のコマンド使用ガイドは次のとおりです。C:\WINDOWS\system32>ssh usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] C:\WINDOWS\system32>
これが機能するssh
場合は、* Nixと同じように使用できます。
C:\WINDOWS\system32>ssh user@host "ls -l ~"
私が作成したスクリプトを挿入して、シンタックスとマニュアルページの調査に費やす時間を節約したいと思ったところです。
a)SingleIP、IP Range、またはIPListファイル
b)IP /範囲で実行するスクリプト名(実際のUNIX sh / kshタイプのスクリプト)
c)オプションで、ポート22を開くためにnmapスキャンを実行します(つまり、一部の非Linuxマシンのサブネット)
-puttyが接続できないIPを回避し、スクリプトが正しく続行できないようにします
d)オプションでpscpコマンドを実行してホストキーを自動キャッシュします(puttyはこれを自動的に行いません)
このバッチは、次のことを前提としています。
1.完全なPuTTYパッケージとSSHキーがC:\ Program Files \ PuTTY \にインストールされている
2. C:\ Program Files \ PuTTY \ scripts \にインストールされているバッチ/スクリプト/ IPlistファイル
3. NMAPとPuTTYの作業ディレクトリがコマンドパスにある
https://www.harmonyhit.com/PuttyBatch.bat
これは主に、さまざまなマシンで単一のスクリプト(SSL証明書の更新など)を使用する場合に役立ちます。
ここに完全なバッチファイルがあります:
@エコーオフ rem SSHキーの場所を反映するようにCACHEKEYおよびSCRIPTセクションを変更する必要があります IPFILE = IPList_temp.txtを設定します runagain = nを設定 OPTION = 1に設定 RANGE =を設定 IP =を設定 SCAN = nを設定 KEYCACHE = nを設定します :オプション CLS ECHO(作業ディレクトリはC:\ Program Files \ PuTTY \ scripts \に設定されています) エコー。 ECHO 1.単一IP ECHO 2. IPリストファイル ECHO 3. IP範囲 エコー。 セット/ p OPTION = "IPタイプを選択してください:" もし%OPTION%== 3ならGOTO IPRANGE IF%OPTION%== 2 GOTO IPLISTの場合 %OPTION%== 1の場合、GOTO SINGLEIP echo有効なオプションを選択してください GOTO OPTION :IPRANGE ECHO次の例のようにIP範囲を入力します。複数の範囲の間にスペースを使用します。 ECHO ie "10.21.0.15-99 10.21.1.15-100" set / p RANGE =範囲を入力: エコー%RANGE%>%IPFILE% GOTO SCRIPTNAME :シングル set / p IP = IPを入力: エコー%IP%>%IPFILE% GOTO SCRIPTNAME :IPLIST set / p IP = IPListファイル名を入力: / Y%IP%%IPFILE%をコピー GOTO SCRIPTNAME :SCRIPTNAME set / p SCRIPT =スクリプト名を入力: 存在しない場合は%SCRIPT%( エコーファイル名が存在しません! GOTO SCRIPTNAME) エコー。 set / p SCAN = Nmapスキャンを最初に実行しますか?(推奨): %SCAN%== n GOTOの場合:RUNCACHE rem nmapはファイルからIP範囲を読み取ることができず、nmapコマンドで直接入力する必要があるため、IPタイプが「範囲」であるかどうかを確認します。 もし%OPTION%== 3ならGOTO NMAPRANGE :NMAP ポート22のエコースキャンIPが開いています... nmap --open -n -p22 -iL%IPFILE%-oG-| findstr / E Up> nmap_temp.txt GOTO AFTERNMAP :NMAPRANGE ポート22のエコースキャンIPが開いています... nmap --open -n -p22%RANGE%-oG-| findstr / E Up> nmap_temp.txt :AFTERNMAP エコー完了 rem nmapのフォーマットが正しくありません。次は余分な情報を削除します / f "tokens = 2"の場合、(nmap_temp.txt)の%% Aはエコー%% A >> nmap_temp2.txt remはIPの最後にある隠しスペースを削除します(「repl」がバッチファイルディレクトリにある必要があります) 「nmap_temp2.txt」と入力します| repl "" "">%IPFILE% :RUNCACHE set / p KEYCACHE = SSHキーをスキャンしてキャッシュしますか(y / n)? %KEYCACHE%== n GOTO SCRIPTの場合 :キャッシュキー remまだキャッシュされていない場合は、すべてのIPを実行してSSHホストキーをキャッシュします。 / F "tokens = *" %% A in(%IPFILE%)do(echo y | "C:\ Program Files \ PuTTY \ pscp.exe" -l root -i "C:\ Program Files \ PuTTY \ SSH .ppk "-touch %% A:/ tmp / test) :脚本 / F "tokens = 1" %% A in(%IPFILE%)do( "C:\ Program Files \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C:\ Program Files \ PuTTY \ SSH.ppk "-m" C:\ Program Files \ PuTTY \ scripts \%SCRIPT% ") 存在する場合nmap_temp.txt(del nmap_temp.txt) nmap_temp2.txt(del nmap_temp2.txt)が存在する場合 set / p runagain = "Enterを押して終了するか、yを押して再実行します" %runagain%== y GOTO OPTIONの場合
SSH.ppk
、スクリプト) to
プログラムfiles`をフォルダを。
これは、ファイルサーバーに保存してデスクトップにショートカットを作成できる最後の「CMD」です。
::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::/superuser/1278434/create-a-batch-file-or-shortcut-to-putty-ssh-that-opens-a-session-and-runs-a-c
set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"
cd %puttydir%
%exe% %remotehost% %remotecmd%
::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh
-m
コマンドラインで直接コマンドを指定できるので、Plinkでスイッチを使用する必要はありません。私の回答を参照してください。