Как создать сценарий удара для проверки соединения SSH?

Я думаю, что необходимо будет использовать некоторый p/invoke:

[DllImport("User32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);

Видят эта статья о том, как настроить монитор буфера обмена в c#

В основном, Вы регистрируете свое приложение как программу просмотра буфера обмена с помощью

_ClipboardViewerNext = SetClipboardViewer(this.Handle);

, и затем Вы получите эти WM_DRAWCLIPBOARD сообщение, которое можно обработать путем переопределения WndProc:

protected override void WndProc(ref Message m)
{
    switch ((Win32.Msgs)m.Msg)
    {
        case Win32.Msgs.WM_DRAWCLIPBOARD:
        // Handle clipboard changed
        break;
        // ... 
   }
}

(существует больше, чтобы быть сделанным; передающие вещи вдоль цепочки буфера обмена и нерегистрации Вашего представления, но можно получить это от статья )

78
задан Hubert Kario 6 February 2012 в 00:31
поделиться

3 ответа

Вы можете проверить это с помощью возвращаемого значения, которое дает вам ssh:

$ ssh -q user@downhost exit
$ echo $?
255

$ ssh -q user@uphost exit
$ echo $?
0

РЕДАКТИРОВАТЬ: Другой подход - использовать nmap (вам не нужны ключи или логин):

$ a=`nmap uphost -PN -p ssh | grep open`
$ b=`nmap downhost -PN -p ssh | grep open`

$ echo $a
22/tcp open ssh
$ echo $b
(empty string)

Но вы сообщение необходимо ввести с помощью команды grep (Nmap не использует возвращаемое значение, чтобы показать, был ли порт отфильтрован, закрыт или открыт).

EDIT2:

Если вас интересует фактическое состояние ssh-порта, вы можете заменить grep open на egrep 'open | closed | filter' :

$ nmap host -PN -p ssh | egrep 'open|closed|filtered'

Просто для завершения.

150
ответ дан 24 November 2019 в 10:29
поделиться

Мне кажется, вы пытаетесь решить не ту проблему. Разве вы не должны попытаться сделать демонов ssh более стабильными? Попробуйте запустить что-то вроде monit , которое проверит, запущен ли демон, и перезапустит его, если это не так (у вас будет время найти корень проблемы, стоящей за выключением sshd). Или с сетевым сервисом проблемы? Попробуйте посмотреть man ifup . Whole Damn Thing просто хочет закрыть тебя? Что ж, это более серьезная проблема ... попробуйте просмотреть свои журналы (начните с системного журнала), чтобы найти сбои оборудования или службы, которые выключают ваш бокс (может быть, монитор температуры?).

-7
ответ дан 24 November 2019 в 10:29
поделиться

Попробуйте:

echo quit | telnet IP 22 2>/dev/null | grep Connected
4
ответ дан 24 November 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: