web-dev-qa-db-ja.com

セッションを開いてコマンドを実行するバッチファイルまたはPuTTY(ssh)へのショートカットを作成する

SSHセッションを開いて同じ単一のコマンドを実行することがよくあります。パスワードを入力せずにログインするためのすべての設定(SSHキーベースの認証を介して)があるので、WindowsでPuTTYまたは同様のプログラムをロードして起動するショートカットまたはバッチファイルを作成する方法があるかどうか疑問に思いましたコマンド(結果が良ければ終了する可能性が高い)。

10

コマンドラインPuTTYバージョンplink.exeを使用して、選択したホストへのSSH接続を開始します。 SSHで接続するには、-sshスイッチを使用します。 -mスイッチを使用すると、コマンドファイルを含めることができます。

plink.exe -ssh Host1 -m C:\path\to\commands.txt

plink.exeこちらからダウンロードできます。

最後のステップは、必要なパラメータを含むplink.exeを含むショートカットを作成することです。

Plinkのドキュメントで他のさまざまなパラメーターを確認してください: Plink.exeのドキュメント

14
Smeerpijp

コマンドの実行を自動化するには、PuTTY自体ではなく Plink(PuTTYパッケージから) を使用します。

Plinkはコマンドラインでコマンドを受け入れます。

plink.exe user@Host command

PuTTYを使い続けたい場合は、 -mスイッチ を使用してコマンドファイルを指定できます(Plinkは-mスイッチもサポートしています)。

8
Martin Prikryl

これを実現するには、PuTTY構成を使用できます。

PuTTYをロードし、セッションを構成します。

ここで実行するリモートコマンドを入力します。

PuTTY remote command box

次に、「Open」をクリックする前に、「Session」に戻ります。 "タブ(上部)、および構成を保存します。

次に、PuTTY.exeへのショートカットを作成し、-loadフラグを追加します。次に例を示します。

%PATH_TO_PuTTY%\PuTTY.exe -load my_config

これで、ショートカットをクリックするだけでセッションが読み込まれ、コマンドが実行されます。

6
Attie

作成したスクリプトを挿入して、シンタックスとマニュアルページの調査に費やす時間を節約したいと思ったところです。


a)SingleIP、IP範囲、または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証明書の更新など)を使用する場合に役立ちます。

ここに完全なバッチファイルがあります:

@ECHO OFF 
 
 rem CACHEKEYおよびSCRIPTセクションを変更して、SSHキーの場所を反映する必要があります
 
 set IPFILE = IPList_temp.txt 
 set runagain = n 
 set OPTION = 1 
 set RANGE = 
 set IP = 
 set SCAN = n 
 set KEYCACHE = n 
 
:OPTION 
 CLS 
 ECHO(作業ディレクトリはC:\ Program Files\PuTTY\scripts \に設定されています)
 ECHO。 
 ECHO 1.単一IP 
 ECHO 2. IPリストファイル
 ECHO 3. IP範囲
 ECHO。
 set/p OPTION = "Choose IPタイプ: "
 IF%OPTION%== 3 GOTO IPRANGE 
 IF%OPTION%== 2 GOTO IPLIST 
 IF%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 = Enter Range:
 echo%RANGE%>% IPFILE%
 GOTO SCRIPTNAME 
 
:SINGLEIP 
 set/p IP = Enter IP:
 echo%IP%>%IPFILE%
 GOTO SCRIPTNAME 
 
:IPLIST 
 set/p IP = IPListファイル名を入力:
 copy/Y%IP%%IPFILE%
 GOTO SCRIPTNAME 
 
:SCRIPTNAME 
 set/p SCRIPT =スクリプト名を入力:
存在しない場合%SCRIPT%(
エコーファイル名が存在しません! 
 GOTO SCRIPTNAME)
 
 ECHO。
 set/p SCAN = Do Nmap scan first?(recommended):
 if%SCAN%== n GOTO:RUNCACHE 
 
 rem nmapはファイルからIP範囲を読み取れず、nmapコマンドで直接入力する必要があるため、IPタイプが「範囲」であるかどうかを確認します
 IF%OPTION%== 3 GOTO NMAPRANGE 
:NMAP 
 echo Scanning IPs for port 22 open ... 
 nmap --open -n -p22 -iL %IPFILE%-oG-| findstr/E Up> nmap_temp.txt 
 GOTO AF TERNMAP 
 
:NMAPRANGE 
 echo Scanning IPs for port 22 open ... 
 nmap --open -n -p22%RANGE%-oG-| findstr/E Up> nmap_temp.txt 
 
:AFTERNMAP 
 echo DONE 
 rem nmapのフォーマットが正しくないため、次のように余分な情報が削除されます
/f "tokens = 2"(nmap_temp.txt)の%% Aはエコー%% A >> nmap_temp2.​​txt 
 remでIPの終わりにある隠しスペースを削除します( "repl"がバッチファイルディレクトリにある必要があります) )
 type "nmap_temp2.​​txt" | repl "" "">%IPFILE%
 
:RUNCACHE 
 set/p KEYCACHE = SSHキーをスキャンしてキャッシュします(y/n)?
 if%KEYCACHE %== n GOTO SCRIPT 
 
:CACHEKEY 
 rem/F "tokens = *のキャッシュがない場合は、すべてのIPを実行してSSHホストキーをキャッシュします
 "%% 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)
 
:SCRIPT 
 for/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を押して再実行します"
 if%runagain%== y GOTO OPTION
2
Todd Porter

Windows 10を使用している場合、Microsoft 伝えられるところ がOpenSSH(クライアントおよびサーバーのベータ版を持っている)を知っていることに興味があるかもしれません。 )):

[…]「オプション機能の管理」、「機能の追加」の順に進みます。次に、リストを下にスクロールして、WindowsのOpenSSHクライアント(ベータ)およびOpenSSHサーバー(ベータ)機能を見つけます。 Windowsで別のリモートサービスを実行するという考えは困難な場合があるので、サーバーをインストールしたくない場合でも、私たちはあなたを責めません。

インストールしたら、コマンドラインを起動して、sshに続けてssh ubuntu@someIPなどのコマンドを入力することで、OpenSSHクライアントを使用できます。

Windows OpenSSHクライアントで取得している現在の(2017年11月28日の)sshコマンドの使用ガイドは次のとおりです。

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>

これが機能する場合は、* Nixと同じようにsshを使用できます。

C:\WINDOWS\system32>ssh user@Host "ls -l ~"

SSH接続を管理するmRemoteNG、MOBAxTerm、SecureCRTなどのソフトウェアを確認することもできます。これは保存されたPuTTYセッションとリンクしているため、テンプレートをセッションに適用できます。

1
Gubbins

これは、ファイルサーバーに保存してデスクトップにショートカットを作成できる最後の「CMD」です。

::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::https://superuser.com/questions/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
0