Это устройство соответствует требованиям. В этом смысле нельзя ничего улучшить.
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 на самом деле не предназначена для запуска сценариев, написанных для одного конкретного интерфейса.
Вам нужно отправить exit\r
, чтобы закрыть ssh-соединение, вместо того, чтобы завершать скрипт в конце.
Хорошо, я отвечу сам себе, потому что лучше читать.
я немного протестировал... я удалил "ожидание", это кажется лучше.
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 :
вот что я получаю, если соединение закрыто некорректно.
Так что я думаю, что это дело закрыто. спасибо за помощь