Я пытаюсь использовать Powershell (чтобы можно было замаскировать пароль) для запуска команды Plink на удаленной машине с Linux, чтобы дать топ-20 каталогов под / opt ...
Соединяется, парольправильно замаскирован, но без результатов Write-output показывает, что собранная командная строка верна ...
, но кажется, что она зависает и не возвращает результаты.может ли быть так, что результаты записи-вывода отличаются от того, что фактически отправляет plink?
Когда я копирую запись-вывод в командную строку cmd и запускаю ее напрямую, она работает (хорошо, что она все еще запрашивает пароль секундувремя из-за sudo, но оно работает и возвращает ожидаемые результаты ...
получение от него не требующего второго пароля для sudo определенно будет большой победой, но теперь мне просто нужно выяснить, почему это не таквозвращение результатов.
Заметьте, что при использовании нескольких аргументов мне было проще собираться таким образом;)
$UserName = Read-Host -Prompt "What is your username?"
$SecPassword = Read-host "what is your password?" -AsSecureString
$ServerName = Read-Host -Prompt "What is the server name?"
$Password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecPassword))
$Command = "C:\Tools\plink.exe"
$arg1 = '-ssh'
$arg2 = $UserName+'@'+$ServerName
$arg3 = '-pw'
$arg4 = $SecPassword
$arg5 = '-t'
$arg6 = 'echo'
$arg7 = '-e'
$arg8 = $SecPassword
$arg10 = ' | '
$arg11 = 'sudo du -aSh /opt/*'
$arg12 = ' | '
$arg13 = 'sort -rh'+' | '
$arg14 = 'head -n 20'
$CommandOut = "$Command $arg1 $arg2 $arg3 $arg4 $arg5 $arg6 $arg7 $arg8 $arg10 $arg11 $arg12 $arg13 $arg14"
Write-Output $CommandOut
& $Command $arg1 $arg2 $arg3 $arg4 $arg5 $arg6 $arg7 $arg8 $arg10 $arg11 $arg12 $arg13 $arg14