2016-08-08 144 views
1

現在、PowerShellスクリプトを実装して、WinSCP .NETアセンブリを利用してLinuxサーバーにアクセスし、各サーバーでbashスクリプトを実行し、ファイル。私は正常に私のスクリプト(各マシンからファイルを引っ張って検証)の接続とコピー機能を実装しているが、私は正しくbashスクリプトを実行することができません。PowerShellスクリプトからWinSCP .NETアセンブリを使用してLinuxサーバー上でbashスクリプトを実行する

私はExecuteCommandcallコマンドの両方を調べましたが、試みたすべてのバリエーションについて同様のエラーメッセージが表示されます。

エラー:

WinSCP.SessionRemoteException: Connection has been unexpectedly closed. Server sent command exit status 255.
Error skipping startup message. Your shell is probably incompatible with the application (BASH is recommended).

誰かがスクリプトを接続し、正常にコピーが、リモートでbashスクリプトを実行することができない理由として説明を提供することができるだろうか?

Foreach ($asset in $idAssetArray) 
{ 
    # Setup session options 
    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ 
     Protocol = [WinSCP.Protocol]::Sftp 
     HostName = $asset[1] 
     UserName = $credential.UserName 
     Password = $credential.GetNetworkCredential().Password 
     SshHostKeyFingerprint = $asset[2] 
    } 

    # 
    $HostDescription = $asset[0] 

    $session = New-Object WinSCP.Session 

    try 
    { 
     # Connect 
     $session.Open($sessionOptions) 

     # Format timestamp 
     $stamp = $(Get-Date -f "MMddyyyy") 

     # Create timestamp directory if DNE 
     $newDirectory = $stamp 
     md -Force $newDirectory 

     # ATTEMPT SCRIPT EXECUTION HERE 

     # Execute CVA Collection Script on asset 
     #$runCommand = "./EncariCVA_RedHatLinux_CollectData.sh" 
     #$session.ExecuteCommand($runCommand) 
     #$session.call ../tmp/cva/EncariCVA_RedHatLinux_CollectData.sh 
     $session.ExecuteCommand("call ./EncariCVA_RedHatLinux_CollectData.sh") 

     # Download the file and throw on any error 
     $session.GetFiles(
      ($remotePath + $fileName), 
      ($localPath + $stamp + "\" + $HostDescription + "." + $stamp + "." + $fileName)).Check() 
    } 
    finally 
    { 
     # Disconnect, clean up 
     $session.Dispose() 
    } 
} 
exit 0 
} 
catch [Exception] 
{ 
    Write-Host ("Error: {0}" -f $_.Exception.Message) 
    exit 1 
} 

ログ出力:あなたがbashでスクリプトを呼び出す必要があり

. 2016-08-09 11:43:24.885 -------------------------------------------------------------------------- 
. 2016-08-09 11:43:24.885 WinSCP Version 5.9 (Build 6786) (OS 6.1.7601 Service Pack 1 - Windows 7 Enterprise) 
. 2016-08-09 11:43:24.885 Configuration: nul 
. 2016-08-09 11:43:24.885 Log level: Normal 
. 2016-08-09 11:43:24.885 Local account: 
. 2016-08-09 11:43:24.885 Working directory: C:\Scripts\CVACollection 
. 2016-08-09 11:43:24.885 Process ID: 7860 
. 2016-08-09 11:43:24.885 Command-line: "" /xmllog="" /xmlgroups /nointeractiveinput /dotnet=590 /ini=nul /log="c:\Scripts\CVACollection\Log.txt" /console /consoleinstance= 
. 2016-08-09 11:43:24.886 Time zone: Current: GMT-5, Standard: GMT-6 (Central Standard Time), DST: GMT-5 (Central Daylight Time), DST Start: 3/13/2016, DST End: 11/6/2016 
. 2016-08-09 11:43:24.886 Login time: Tuesday, August 09, 2016 11:43:24 AM 
. 2016-08-09 11:43:24.886 -------------------------------------------------------------------------- 
. 2016-08-09 11:43:24.886 Script: Retrospectively logging previous script records: 
> 2016-08-09 11:43:24.886 Script: option batch on 
< 2016-08-09 11:43:24.886 Script: batch   on   
< 2016-08-09 11:43:24.886 Script: reconnecttime 120  
> 2016-08-09 11:43:24.886 Script: option confirm off 
< 2016-08-09 11:43:24.886 Script: confirm   off  
> 2016-08-09 11:43:24.886 Script: option reconnecttime 120 
< 2016-08-09 11:43:24.886 Script: reconnecttime 120  
> 2016-08-09 11:43:24.886 Script: open sftp://X:***@ -hostkey="" -timeout=15 
. 2016-08-09 11:43:24.886 -------------------------------------------------------------------------- 
. 2016-08-09 11:43:24.886 Session name: (Ad-Hoc site) 
. 2016-08-09 11:43:24.886 Host name: (Port: 22) 
. 2016-08-09 11:43:24.886 User name: X (Password: Yes, Key file: No) 
. 2016-08-09 11:43:24.886 Tunnel: No 
. 2016-08-09 11:43:24.886 Transfer Protocol: SFTP 
. 2016-08-09 11:43:24.886 Ping type: Off, Ping interval: 30 sec; Timeout: 15 sec 
. 2016-08-09 11:43:24.886 Disable Nagle: No 
. 2016-08-09 11:43:24.886 Proxy: None 
. 2016-08-09 11:43:24.886 Send buffer: 262144 
. 2016-08-09 11:43:24.886 SSH protocol version: 2; Compression: No 
. 2016-08-09 11:43:24.886 Bypass authentication: No 
. 2016-08-09 11:43:24.886 Try agent: Yes; Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: No 
. 2016-08-09 11:43:24.886 Ciphers: aes,chacha20,blowfish,3des,WARN,arcfour,des; Ssh2DES: No 
. 2016-08-09 11:43:24.886 KEX: ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN,dh-group1-sha1 
. 2016-08-09 11:43:24.886 SSH Bugs: Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto 
. 2016-08-09 11:43:24.886 Simple channel: Yes 
. 2016-08-09 11:43:24.886 Return code variable: Autodetect; Lookup user groups: Auto 
. 2016-08-09 11:43:24.886 Shell: default 
. 2016-08-09 11:43:24.886 EOL: LF, UTF: Auto 
. 2016-08-09 11:43:24.886 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes; Follow directory symlinks: No 
. 2016-08-09 11:43:24.886 LS: ls -la, Ign LS warn: Yes, Scp1 Comp: No 
. 2016-08-09 11:43:24.886 SFTP Bugs: Auto,Auto 
. 2016-08-09 11:43:24.886 SFTP Server: default 
. 2016-08-09 11:43:24.886 Local directory: default, Remote directory: home, Update: Yes, Cache: Yes 
. 2016-08-09 11:43:24.886 Cache directory changes: Yes, Permanent: Yes 
. 2016-08-09 11:43:24.886 Recycle bin: Delete to: No, Overwritten to: No, Bin path: 
. 2016-08-09 11:43:24.886 DST mode: Unix 
. 2016-08-09 11:43:24.886 -------------------------------------------------------------------------- 
. 2016-08-09 11:43:24.886 Looking up host "X" for SSH connection 
. 2016-08-09 11:43:24.886 Connecting to X port 22 
. 2016-08-09 11:43:24.924 We claim version: SSH-2.0-WinSCP_release_5.9 
. 2016-08-09 11:43:24.944 Server version: SSH-2.0-OpenSSH_5.3 
. 2016-08-09 11:43:24.944 We believe remote version has SSH-2 channel request bug 
. 2016-08-09 11:43:24.944 Using SSH protocol version 2 
. 2016-08-09 11:43:24.945 Have a known host key of type rsa2 
. 2016-08-09 11:43:24.965 Doing Diffie-Hellman group exchange 
. 2016-08-09 11:43:24.984 Doing Diffie-Hellman key exchange with hash SHA-256 
. 2016-08-09 11:43:25.540 Server also has ssh-dss host key, but we don't know it 
. 2016-08-09 11:43:25.540 Host key fingerprint is: 
. 2016-08-09 11:43:25.540 ssh-rsa 2048 X 
. 2016-08-09 11:43:25.540 Verifying host key rsa2 X 
. 2016-08-09 11:43:25.541 Host key matches configured key 
. 2016-08-09 11:43:25.542 Initialised AES-256 SDCTR client->server encryption 
. 2016-08-09 11:43:25.542 Initialised HMAC-SHA-256 client->server MAC algorithm 
. 2016-08-09 11:43:25.542 Initialised AES-256 SDCTR server->client encryption 
. 2016-08-09 11:43:25.542 Initialised HMAC-SHA-256 server->client MAC algorithm 
! 2016-08-09 11:43:25.616 Using username "X". 
. 2016-08-09 11:43:25.635 Prompt (password, "SSH password", <no instructions>, "&Password: ") 
. 2016-08-09 11:43:25.635 Using stored password. 
. 2016-08-09 11:43:25.636 Sent password 
. 2016-08-09 11:43:25.654 Access granted 
. 2016-08-09 11:43:25.654 Opening session as main channel 
. 2016-08-09 11:43:25.675 Opened main channel 
. 2016-08-09 11:43:25.751 Started a shell/command 
. 2016-08-09 11:43:25.752 -------------------------------------------------------------------------- 
. 2016-08-09 11:43:25.752 Using SFTP protocol. 
. 2016-08-09 11:43:25.752 Doing startup conversation with host. 
> 2016-08-09 11:43:25.752 Type: SSH_FXP_INIT, Size: 5, Number: -1 
< 2016-08-09 11:43:25.772 Type: SSH_FXP_VERSION, Size: 95, Number: -1 
. 2016-08-09 11:43:25.772 SFTP version 3 negotiated. 
. 2016-08-09 11:43:25.772 Unknown server extension [email protected]="1" 
. 2016-08-09 11:43:25.772 Supports [email protected] extension version "2" 
. 2016-08-09 11:43:25.772 Unknown server extension [email protected]="2" 
. 2016-08-09 11:43:25.772 We believe the server has signed timestamps bug 
. 2016-08-09 11:43:25.772 We will use UTF-8 strings until server sends an invalid UTF-8 string as with SFTP version 3 and older UTF-8 strings are not mandatory 
. 2016-08-09 11:43:25.772 Limiting packet size to OpenSSH sftp-server limit of 262148 bytes 
. 2016-08-09 11:43:25.772 Getting current directory name. 
. 2016-08-09 11:43:25.773 Getting real path for '.' 
> 2016-08-09 11:43:25.773 Type: SSH_FXP_REALPATH, Size: 10, Number: 16 
< 2016-08-09 11:43:25.792 Type: SSH_FXP_NAME, Size: 43, Number: 16 
. 2016-08-09 11:43:25.792 Real path is '/home/X' 
. 2016-08-09 11:43:25.792 Startup conversation with host finished. 
< 2016-08-09 11:43:25.792 Script: Active session: [1] [email protected] 
> 2016-08-09 11:43:26.465 Script: pwd 
< 2016-08-09 11:43:26.465 Script: /home/X 
> 2016-08-09 11:43:26.545 Script: call bash /tmp/cva/EncariCVA_RedHatLinux_CollectData.sh 
< 2016-08-09 11:43:26.546 Script: Searching for host... 
. 2016-08-09 11:43:26.547 [Shell] Looking up host "X" for SSH connection 
. 2016-08-09 11:43:26.547 [Shell] Connecting to X port 22 
. 2016-08-09 11:43:26.572 [Shell] We claim version: SSH-2.0-WinSCP_release_5.9 
< 2016-08-09 11:43:26.573 Script: Connecting to host... 
. 2016-08-09 11:43:26.595 [Shell] Server version: SSH-2.0-OpenSSH_5.3 
. 2016-08-09 11:43:26.595 [Shell] We believe remote version has SSH-2 channel request bug 
. 2016-08-09 11:43:26.595 [Shell] Using SSH protocol version 2 
. 2016-08-09 11:43:26.595 [Shell] Have a known host key of type rsa2 
. 2016-08-09 11:43:26.618 [Shell] Doing Diffie-Hellman group exchange 
. 2016-08-09 11:43:26.637 [Shell] Doing Diffie-Hellman key exchange with hash SHA-256 
. 2016-08-09 11:43:27.222 [Shell] Server also has ssh-dss host key, but we don't know it 
. 2016-08-09 11:43:27.222 [Shell] Host key fingerprint is: 
. 2016-08-09 11:43:27.222 [Shell] ssh-rsa 2048 X 
. 2016-08-09 11:43:27.222 [Shell] Verifying host key rsa2 X with fingerprint ssh-rsa 2048 X 
< 2016-08-09 11:43:27.222 Script: Authenticating... 
. 2016-08-09 11:43:27.222 [Shell] Host key matches configured key 
. 2016-08-09 11:43:27.222 [Shell] Initialised AES-256 SDCTR client->server encryption 
. 2016-08-09 11:43:27.222 [Shell] Initialised HMAC-SHA-256 client->server MAC algorithm 
. 2016-08-09 11:43:27.222 [Shell] Initialised AES-256 SDCTR server->client encryption 
. 2016-08-09 11:43:27.223 [Shell] Initialised HMAC-SHA-256 server->client MAC algorithm 
! 2016-08-09 11:43:27.317 [Shell] Using username "X". 
< 2016-08-09 11:43:27.317 Script: Using username "X". 
. 2016-08-09 11:43:27.345 [Shell] Prompt (password, "SSH password", <no instructions>, "&Password: ") 
. 2016-08-09 11:43:27.346 [Shell] Using stored password. 
< 2016-08-09 11:43:27.346 Script: Authenticating with pre-entered password. 
. 2016-08-09 11:43:27.347 [Shell] Sent password 
. 2016-08-09 11:43:27.366 [Shell] Access granted 
. 2016-08-09 11:43:27.366 [Shell] Opening session as main channel 
. 2016-08-09 11:43:27.388 [Shell] Opened main channel 
. 2016-08-09 11:43:27.481 [Shell] Started a shell/command 
< 2016-08-09 11:43:27.481 Script: Authenticated. 
. 2016-08-09 11:43:27.481 [Shell] -------------------------------------------------------------------------- 
. 2016-08-09 11:43:27.481 [Shell] Using SCP protocol. 
. 2016-08-09 11:43:27.481 [Shell] Doing startup conversation with host. 
< 2016-08-09 11:43:27.481 Script: Starting the session... 
. 2016-08-09 11:43:27.482 [Shell] Skipping host startup message (if any). 
> 2016-08-09 11:43:27.482 [Shell] echo "WinSCP: this is end-of-file:0" 
! 2016-08-09 11:43:27.661 [Shell] Can't call method "readline" on an undefined value at /usr/local/share/perl5/Term/Shell.pm line 107. 
. 2016-08-09 11:43:27.664 [Shell] Server sent command exit status 255 
. 2016-08-09 11:43:27.666 Closing connection. 
. 2016-08-09 11:43:27.666 Sending special code: 12 
. 2016-08-09 11:43:27.667 Sent EOF message 
. 2016-08-09 11:43:27.667 [Shell] Disconnected: All channels closed 
< 2016-08-09 11:43:27.669 Script: Connection has been unexpectedly closed. Server sent command exit status 255. 
< 2016-08-09 11:43:27.669 Error skipping startup message. Your shell is probably incompatible with the application (BASH is recommended). 
. 2016-08-09 11:43:27.670 Script: Failed 
> 2016-08-09 11:43:28.213 Script: exit 
. 2016-08-09 11:43:28.213 Script: Exit code: 1 
. 2016-08-09 11:43:29.249 -------------------------------------------------------------------------- 
+1

私が間違っていない場合、 'call'はバッチスクリプトを呼び出すために使用されます。 'bash'を実行してスクリプトを処理させる必要があります。 – alvits

答えて

2

:これはそれを許可します

$session.ExecuteCommand("bash /path/to/EncariCVA_RedHatLinux_CollectData.sh") 

    あなたがなります
  • 、効果的に、 bashを使用してbashスクリプトを呼び出します(たとえば、シバンがない場合)。
  • 権限の問題(実行可能ビットが設定されていない)があっても、スクリプトは実行されます。
2

Session.ExecuteCommand methodの引数は、サーバーで実行するコマンドです。

callは、サーバ上でコマンドを実行するローカルのWinSCP scriptingコマンドですが、

ExecuteCommand(command)は内部でcall commandを呼び出します。あなたは効果的にcall call commandと呼んでいます。

ExecuteCommandからcallを削除するだけです。

$session.ExecuteCommand("./EncariCVA_RedHatLinux_CollectData.sh") 

あなたは、「タイプ」、パスワードはbashを起動したとき、あなたは同様に、リダイレクト入力からパスワードを供給する必要がありますする必要がありますが:

$session.ExecuteCommand("echo password| bash ./EncariCVA_RedHatLinux_CollectData.sh") 

しかしを見て」定義されていない値 "のメソッド" readline "を呼び出すことはできませんが、実際にはパスワードを読み取るスクリプトのようにいくつかの問題があります。おそらく、WinSCPシェルセッションの非対話的な性質のためです。しかしそれはただの野生の推測です。スクリプトの詳細を知らなくても私たちはあなたを助けることができません。

+0

これは、スクリプトファイルがサーバー上のユーザーのホームディレクトリに存在することを想定しているとも言われます。そうでない場合は、リモートパスも調整する必要があります。 – tripleee

+0

おそらく、私はbashを実行するときにパスワードの入力を求められているはずです。あなたと@pahソリューションを試しましたが、同様のエラーとログ出力があります。私はログを含めるために私の質問を編集しました。 –

+0

これを達成するためにどのような技術を使用すべきかについての推奨がありますか?これはスクリプト可能ですか?約21台のマシンでbashスクリプトを実行しようとします。それぞれのマシンでは、bashのユーザー名とパスワードの組み合わせが同じです。 –

関連する問題