отправить специальный символ «~ -enter» в сценарии ожидания

Это устройство соответствует требованиям. В этом смысле нельзя ничего улучшить.

systemd просто не поддерживает определение настраиваемого действия для systemctl status foo , в отличие от сценариев init.d в System V init. systemd может проверять только работающий демон (или нет, учитывая RemainAfterExit ).

systemd не отслеживает устройства для статуса сети, IP-адресов или устаревших псевдонимов интерфейсов, которые вы используете.

Вместо этого вы можете изменить свою основную систему конфигурации сети, включив в нее второй IP-адрес. Возможно, вам понравится хранить всю конфигурацию сетевых адресов в одном месте :).

systemd-networkd поддерживает запуск DHCP и статических адресов на одном интерфейсе. NetworkManager этого не делает, но в настоящее время вы можете создать ключевой файл для создания виртуальных интерфейсов macvlan как дочерних по отношению к физическому.(Теоретически это может даже позволить вам запросить несколько адресов DHCP :). Не пытайтесь применить конфигурации из более чем одной из этих систем конфигурации к одному и тому же интерфейсу. Если вы уже используете NetworkManager, вероятно, проще всего использовать это.

И systemd-network (networkctl), и NetworkManager (например, nmcli) затем обнаружат и покажут, изменили ли вы их сетевые интерфейсы самостоятельно.

Также возможно настроить старые системы конфигурации [ 1 ] [ 2 ] для создания интерфейсов macvlan. Однако, насколько я помню, они могли запутаться, если вы возились с интерфейсами за их спиной.

При необходимости в большинстве систем конфигурации можно было бы взломать дополнительные настраиваемые задачи до или после установки [ 3 ], хотя systemd-networkd не имеет встроенной такой системы. Я говорю «взломан», потому что система NM на самом деле не предназначена для запуска сценариев, написанных для одного конкретного интерфейса.

1
11.10.2017, 02:07
2 ответа

Вам нужно отправить exit\r, чтобы закрыть ssh-соединение, вместо того, чтобы завершать скрипт в конце.

0
27.01.2020, 23:44

Хорошо, я отвечу сам себе, потому что лучше читать.

я немного протестировал... я удалил "ожидание", это кажется лучше.

cat <<< '#!/usr/bin/expect -f
spawn ssh -e none root:ttyS'"$port"'@'"$console"'

expect {
        "*regular*" { send "1\r"}
        "default" { send "i\r"}
        }

expect {
        "*gnore*" { send "i\r"}
        }

expect {
        "*\n*" {send "\r"}
        }
sleep 5
expect {
        "*\n*" {send "\r"}
        }
sleep 2
expect {
        "*\n*" {send "\r"}
}
sleep 2
' > $TMPEXPECT
$TMPEXPECT
echo ""
echo ""
echo "this is a test after the expect and expect eof part"

с этим кодом я получаю этот вывод:

spawn ssh -e none root:ttyS33@console

A non-empty Data Buffering File was found. Choose which action
should be performed ( (I)gnore, (D)isplay, (E)rase or (S)how and erase ) : I

Welcome to Special Dedicated-Server Linux (x86_64) Version 5.6.0 - Kernel 4.4.89-9.1.x86_64 (ttyS0).

server login:
Welcome to Special Dedicated-Server Linux (x86_64) Version 5.6.0 - Kernel 4.4.89-9.1.x86_64 (ttyS0).

server login:

this is a test after the expect and expect eof part

кажется, что соединение закрыто правильно. я так думаю. у меня есть тест нормального подключения. и я не получаю такого сообщения:

*
* * * ttyS33 is being used by (root) !!!
*

1 - Initiate a regular session
2 - Initiate a sniff session
3 - Send messages to another user
4 - Kill session(s)
5 - Quit

Enter your option :

вот что я получаю, если соединение закрыто некорректно.

Так что я думаю, что это дело закрыто. спасибо за помощь

1
27.01.2020, 23:44

Теги

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