Ahoj,mozna to uz nekdo ma hotovy,ale nebylo by od veci udelat jednoduchy script treba do linuxu,ktery by komunikoval se vzdalenym MT routerem (typicky igw) a automaticky vkladal nove zakazniky bez nutnosti se prihlasovat do tohoto MT routeru.
Jednalo by se o SSH davkovou komunikaci.
Na strane linuxu by mohlo jit o jednoduchy PHP kod.
Vlozit noveho zakaznika znamena: (v 2.8)
-pripojit se SSH na MT igw
-vlozit nasledujici
/ ip firewall mangle
add src-address=10.10.10.11/32 action=passthrough mark-connection=jmenozakaznika comment="" disabled=no
add connection=jmenozakaznika action=accept mark-flow=jmenozakaznika comment="" disabled=no
/queue tree
add name="jmenozakaznika-down" parent=PLATICI-DOWN flow=jmenozakaznika limit-at=25600 queue=default priority=8 max-limit=256000 burst-limit=0 burst-threshold=0 burst-time=0 disabled=no
add name="jmenozakaznika-up" parent=PLATICI-UP flow=jmenozakaznika limit-at=6400 queue=default priority=8 max-limit=65000 burst-limit=0 burst-threshold=0 burst-time=0 disabled=no
Pokud by toto nekdo automatizoval a udelal PHP SCRIPT a jednoduchy formular,tak bych mu osobne i pogratuloval:)
Inspirace napr.:
http://www.abclinuxu.cz/forum/show/76417
Tady je ten script. Skript si vola textovy soubor, kde je seznam prikazu k provedeni. Akorat prikay mezi < > jsem vlozil do uvozovek, protoze nevim, jak to zformatovat. Tyka se to radku: while(..PS..) a while ($cmd = ..FILE..).
#!/usr/bin/perl
##-varibles
use Expect;
$ssh = "/usr/bin/ssh -v";
$router = "$ARGV";
$txtfile = "$ARGV";
#-get username/password
open(PS,"/etc/monitor.passwd");
while ("<"PS">") {
chomp;
($usernm,$pass) = split(/\|\|/, $_);
}
close(PS);
$command = "$ssh -l $usernm $router";
#-connect to router.
$ssh = Expect->spawn("$command");
$ssh->log_stdout(0);
#-send password.
if ($ssh->expect(undef, "password:")) {
print $ssh "$pass\r";
}
#-send command.
open( FILE, "< $txtfile" ) or die;
if ($ssh->expect(undef, ">")) {
while ($cmd = "<"FILE">") {
print $ssh "$cmd\r";
$ssh->expect(undef, ">");
}
}
close FILE;
print $ssh "/quit\r";
Nebo:
http://yazzy.yazzy.org/coding/shell/rou ... uteros.txt
#!/bin/sh
# This script executes commands remotely on RouterOS and *NIX boxes.
# by Marcin Jessa - yazzy yazzy > " exit
' > ${TMPFILE}
${EXPECT} ${TMPFILE}
rm -rf ${TMPFILE}
echo ""
exit 0
}
# Expects a list of hosts.
make_router_menu() {
local I
I=1
for RCHOICE in $@ ; do
echo -n "\"${1}\" \"Router #${I}\" off "
shift
I=$((${I}+1));
done
unset I
return 0
}
# Chose a router we will connect to:
routers_list() {
MENUTEXT=`cat <<-EOT
Select a router from the list. \n
Press SPACE to toggle an option on/off.
EOT
`
eval ${DIALOG} --title \"Router List.\" --clear \
--radiolist \"${MENUTEXT}\" -1 -1 ${ROUTER_AMOUNT} \
`make_router_menu ${ROUTER_IP}` 2> ${TMPFILE}
retval=$?
ROUTER=`cat ${TMPFILE}`
rm -f ${TMPFILE}
#echo "Router connected to = ${ROUTER}"
case ${retval} in
0)
command_menu
;;
1)
echo "Cancel pressed.";;
255)
echo "ESC pressed.";;
esac
exit 0
}
command_menu() {
${DIALOG} --title "Command box." --clear \
--inputbox "Type in your commands you want \n\
to remotely execute on your \n
${ROUTER} router." -1 -1 "/" 2> ${TMPFILE}
retval=$?
COMMAND=`cat ${TMPFILE}`
rm -f ${TMPFILE}
case ${retval} in
0)
echo "Input string to ${ROUTER} is: '${COMMAND}'"
connect_${SERVICE}
;;
1)
echo "Cancel pressed.";;
255)
echo "ESC pressed.";;
esac
}
### Main function: ###
run_script() {
MAINMENU=`cat <<-EOF
This is simple frontend to remotely execute commands
on your RouterOS box with either Telnet or SSH protocol.
Press SPACE to chose an option.
Which of the following do you want to do?
EOF
`
${DIALOG} --title "Remote execustion of commands on RouterOS." --clear \
--radiolist "${MAINMENU}" -1 -1 5 \
"telnet" "Connect with Telnet." off \
"ssh" "Connect with SSH." off 2> ${TMPFILE} || exit $?
retval=$?
SERVICE=`cat ${TMPFILE}`
rm -f ${TMPFILE}
#echo "CHOICE = ${CHOICE}"
case ${SERVICE} in
telnet)
username ;;
ssh)
username ;;
esac
#
# Exit with no errors.
#
exit 0
}
run_script