Выполнение команд в Linux через SSH с помощью Powershell
В одной моей задаче надо было написать скрипт для отправки SMS-сообщений. У нас уже был настроен сервер для отправки SMS на Linux. Оставалось только научиться отправлять команды в Linux через SSH.
Первоначально я пытался использовать модуль SSH-Session, но в нем были какие-то ошибки при отправке команд. Поэтому я остановился на Posh-SSH.
Устанавливаем модуль:
PS H:\> iex (New-Object Net.WebClient).DownloadString("https://gist.github.com/darkoperator/6152630/raw/c67de4f7cd780ba367cccbc2593f38d18ce6df89/instposhsshdev") Downloading latest version of Posh-SSH from https://github.com/darkoperator/Posh-SSH/archive/master.zip File saved to C:\Users\user1\AppData\Local\Temp\Posh-SSH.zip Uncompressing the Zip file to C:\Users\user1\Documents\WindowsPowerShell\Modules Renaming folder Module has been installed
Перезапускаем Powershell-сессию и пробуем добавить модуль:
Import-Module posh-ssh
Мне понадобились следующие командлеты:
- New-SSHSession
- Invoke-SshCommand
- Get-SSHSession
- Remove-SshSession
Назначение командлетов понятно из названия (по порядку): инициализация подключения к SSH-серверу, выполнение команды, получение объекта подключения, закрытие подключения.
New-SSHSession требует учетные данные для подключения, поэтому их получаем через Get-Credential.
Приблизительный пример использования модуля в моем случае был такой:
Import-Module posh-ssh; $credential = Get-Credential; New-SSHSession -ComputerName 10.11.12.201 -Credential $credential; Invoke-SshCommand -index 0 -Command ; # -index 0 - это идентификатор подключения. Обычно 0. Можно посмотреть все подключения через Get-SSHSession. Get-SSHSession | Remove-SshSession;
В обычной жизни конечно вы не будете использовать Get-Credential каждый раз, когда надо выполнить скрипт, поэтому удобно будет сохранить объект Credential в каком-то более-менее зашифрованном виде на диск. Об этом я отдельно написал в статье "".
- Просмотров: 5988