3

Linuxスタイルのsshコマンドを持つ単純なPowerShell関数を作成しようとしています。そのような:

ssh username@url

私はこれを行うためにplinkを使用しています、そしてこれは私が書いた関数です:

function ssh {
    param($usernameAndServer)

    $myArray = $usernameAndServer.Split("@")

    $myArray[0] | C:\plink.exe -ssh $myArray[1]
}

ユーザーが正しく入力した場合、$ myArray [0]はユーザー名であり、$myArray[1]はURLです。したがって、URLに接続し、ユーザー名の入力を求められると、パイプラインを使用してユーザー名がストリーミングされます。パイプラインがユーザー名($ myArray [0])を送り続け、パスワードとして何度も入力されることを除いて、すべてが完全に機能します。例:

PS C:\Users\Mike> ssh xxxxx@yyyyy
login as: xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyyy's password:
Access denied
xxxxx@yyyy's password:
Access denied
xxxxx@yyyyy's password:
FATAL ERROR: Server sent disconnect message
type 2 (protocol error):
"Too many authentication failures for xxxxx"

ユーザー名がxxxxxに置き換えられ、URLがyyyyyに置き換えられた場合。

基本的に、スクリプトが一度入力された後、ユーザー名($ myArray [0])でスクリプトがパイプされるのを防ぐ方法を見つける必要があります。

何か案は?私はインターネット全体で解決策を探しましたが、何も見つかりませんでした。

4

1 に答える 1

2

plinkでは、ユーザーとホストを1つの引数で一緒に指定できませんか?あれは:

plink -ssh user @ host

もしそうなら、あなたのssh関数は次のように絞り込まれます:

function ssh {
    param($usernameAndServer)

    C:\plink.exe -ssh $usernameAndServer
}
于 2011-01-12T04:22:24.417 に答える