Mikrotik API - будь оно не ладно
Всем доброй ночи.
Возможно найдутся знатоки, подскажут.
Я пытаюсь на bash реализовать частично API Mikrotik (https://wiki.mikrotik.com/wiki/Manual:API), но чувствую, что где-то нафакапил. Потрачено около 8 часов. Вопрос принципиальный.
Приведу часть написанного:
#!/usr/bin/bash
exec 3<>/dev/tcp/172.16.55.1/8728
passwd='password'
chr () {
printf \\$(printf %o $1)
}
sread () {
response=`timeout 1 cat <&3 | tr -d '\0' `
challenge=`echo -ne $response | gawk -F"=" '{ print $3 }' | xxd -r -p`
echo $challenge
zero=`chr 0`
md=`echo -ne $zero$passwd$challenge | md5sum | gawk '{ print $1 }'`
#cmd='/login=name=admin=response=00'$md
cmd1='/login\n'
cmd2='=name=admin\n'
cmd3='=response=00'$md'\n'
}
wLogin () {
sread
#wWord $cmd
wWord $cmd1
wWord $cmd2
wWord $cmd3
}
sclose () {
exec 3<&-
exec 3>&-
}
len () {
echo -ne ${#1}
}
wWord () {
echo $1
wLen $1
echo -ne $1 >&3
wLen
}
wLen () {
echo `len $1`
chr `len $1` >&3
}
Используется так:
source api.sh
wWord /login
sread
wLogin
получаю: !fatal.no.login.in (смотрю пока tcpdump'ом)
Понимаю, что замысел бессмысленный, но уже хочется просто понять, ЧЯДНТ?!