Как узнать операционную систему с помощью SSH?

Как можно узнать тип операционной системы на удаленном хосте с использованием Python и модуля paramiko? Есть ли "правильный" способ для этого?
  • 20 декабря 2023 г. 15:37
Ответы на вопрос 2
Да, существует несколько способов узнать операционную систему удаленного хоста с использованием Python и модуля paramiko.

1. Можно выполнить команду `uname -a`, которая выведет информацию о ядре операционной системы. Если операционная система базируется на Unix/Linux, это может дать информацию о ее типе. Пример кода:
```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')

stdin, stdout, stderr = ssh.exec_command('uname -a')
output = stdout.readlines()[0].strip()
print(output)

ssh.close()
```

2. Можно проверить содержимое файла `/etc/os-release`, который обычно содержит информацию о текущей операционной системе. Пример кода:
```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')

stdin, stdout, stderr = ssh.exec_command('cat /etc/os-release')
output = stdout.read().decode('utf-8')
print(output)

ssh.close()
```

3. Можно выполнить команду `lsb_release -a`, которая выведет подробную информацию о операционной системе (при условии, что на удаленном хосте установлен пакет `lsb-release`). Пример кода:
```python
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')

stdin, stdout, stderr = ssh.exec_command('lsb_release -a')
output = stdout.read().decode('utf-8')
print(output)

ssh.close()
```

Это лишь несколько возможных способов получить информацию об операционной системе с использованием Python и paramiko. Выбор конкретного способа зависит от ваших конкретных потребностей и особенностей удаленного хоста.
Два варианта: 
1) запустить "uname -a" - https://stackoverflow.com/questions/46669453/effic...
2) запустить nmap - это должно работать даже без пользователя на удаленной системе https://stackoverflow.com/questions/27158046/remot...
Похожие вопросы