Следующее будет работать в sh:
if echo "$hasArgs" | grep -q "$x"; then
Другой возможностью было бы (по крайней мере, с моей точки зрения, )определение некоторой функции для ssh
ing, которая печатала бы некоторый баннер перед фактическим ssh
входом в сеанс. Просто проявите творческий подход, если вам это нужно.
Пример функции:
unalias ssh 2> /dev/null
ssh ()
{
if ! { [ $# -eq 2 ] && [ -n "$1" ] && [ -n "$2" ]; } then
# shellcheck disable=SC2016
printf >&2 '%s\n' 'Expecting $1 = username, $2 = computer'
return 1
fi
case "$1" in
(user1) banner='This will be great SSH!' ;;
(user2) banner='Enjoy your SSH session!' ;;
(*) banner='Some generic banner...' ;;
esac
printf '%s\n' \
"Entering SSH session as user $1 onto computer $2..." \
"$banner"
command ssh "$1"@"$2"
}
Пример вызова:
ssh root 192.168.0.1
Пример вывода:
Entering SSH session as user root onto computer 192.168.0.1...
Some generic banner...
BusyBox v1.30.1 () built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt 19.07.3, r11063-85e04e9f46
-----------------------------------------------------
ну, если вы имеете в виду показывать разные баннеры для каждого пользователя или IP-адреса, подключающегося через ssh, у вас есть опции для обоих , как показано ниже, используя команду Match
;
разные баннеры на основе имени пользователя:
# put in Match section like
Match User sshUser
Banner /path/to/specific_banner
разные баннеры на основе IP-адреса:
# put in Match section like
Match Address 10.20.30.0/24
Banner /path/to/specific_banner
значит, это возможно; вам просто нужно перезагрузить sshd
, чтобы изменения вступили в силу; если ваша версия sshd не имеет команды перезагрузки (в худшем состоянии ), вам потребуется перезапустить ее.