Как запустить скрипт на рабочем столе Windows через SSH?

Как можно запустить скрипт на Windows сервере в новом окне на рабочем столе с другого сервера с использованием метода `execute_commands` из класса `Client`? Как вносить изменения в функцию `start` для достижения этой цели?
  • 15 августа 2024 г. 14:03
Ответы на вопрос 2
Для запуска скрипта на рабочем столе Windows через SSH можно воспользоваться следующими шагами:

1. Убедитесь, что на целевом компьютере с Windows установлен SSH сервер (например, OpenSSH).

2. Установите SSH клиент на другом сервере или компьютере, с которого будете подключаться к целевому Windows серверу.

3. Подключитесь к целевому Windows серверу через SSH с помощью команды вида:
```
ssh username@ip_address
```

4. После успешного подключения, выполните команду для запуска скрипта на рабочем столе Windows. Например:
```
./path/to/your_script.ps1
```

Чтобы выполнить скрипт на Windows сервере в новом окне на рабочем столе с помощью метода `execute_commands` из класса `Client`, можно модифицировать функцию `start`. Ниже приведен пример кода, показывающий как это можно сделать:

```python
from paramiko import SSHClient, AutoAddPolicy
import tkinter as tk

class Client:
    def __init__(self, hostname, username, password):
        self.hostname = hostname
        self.username = username
        self.password = password
        self.client = SSHClient()
        self.client.set_missing_host_key_policy(AutoAddPolicy())

    def connect(self):
        self.client.connect(self.hostname, username=self.username, password=self.password)

    def execute_commands(self, commands):
        stdin, stdout, stderr = self.client.exec_command(commands)
        return stdout.read()

    def start(self, script_path):
        command = f"powershell Start-Process powershell -ArgumentList '-NoExit','-Command {script_path}'"
        self.execute_commands(command)

# Пример использования
hostname = '192.168.1.2'
username = 'user'
password = 'password'
script_path = 'C:\\path\\to\\your_script.ps1'

client = Client(hostname, username, password)
client.connect()
client.start(script_path)
```

В функции `start` добавлен командой `powershell Start-Process` для запуска скрипта powershell в новом окне на рабочем столе. Не забудьте заменить переменные `hostname`, `username`, `password`, и `script_path` на свои значения.
ssh запускается как служба, и не имеет доступа к консоли текущего пользователя. 

Правильно - создать задачу в task scheduler (планировщик задач), без условий (тригеры), указав пользователя с его паролем и отметить чекбоксик интерактивности. А в момент, когда нужно запустить эту задачу, запускать ее с помощью schtasks /run
Похожие вопросы