Наибанальнейшая задача, связанная с тем фактом, что Mikrotik подставляет расширение txt практически к любому файлу. Простой консольный вариант:
/tool fetch mode=ftp user=FTP_USER password=Parol src-path=$SrcFile dst-path=$DstFile
Для работы требуется включить FTP, для безопасности можно ограничить адресом 127.0.0.1:
add action=accept chain=input dst-address=127.0.0.1 dst-port=80,21 protocol=tcp
Также требуется создать пользователя с ограничением по адресу и связать с группой с правами FTP,read,write
/user group add name=ftp policy="ftp,read,write,!local,!telnet,!ssh,!reboot,!policy,!test,!winbox,!password,!web,!sniff,!sensitive,!api,!romon,!dude,!tikapp"
/user add address=127.0.0.1/32 group=ftp name=FTP_USER
А это простенькая функция:
# Example: $RenameCopyFile SrcFile="File.ovpn.txt" DstFile="File.ovpn" ItCopy=true
:local RenameCopyFile do={
do {
[/tool fetch mode=ftp user=User password=Parol url="ftp://127.0.0.1/$SrcFile" dst-path=$DstFile as-value]
} on-error={
:put ("Failed to copy/rename file from \"$SrcFile\"")
:put ("Check settings ftp. \r\nImportant: \r\n\tftp - enable, \r\n\tport 21 open from 127.0.0.1, \r\n\tcreate user with permisson: \r\n\t\tftp,\r\n\t\tread,\r\n\t\twrite \r\n\tand allowed address=127.0.0.1")
return 0
}
if ($ItCopy=false) do={
/file remove $SrcFile
:put ("Success to rename file to \"$DstFile\"")
} else {
:put ("Success to copy file to \"$DstFile\"")
}
}
Функция не делает всяких проверок на наличие файла и правил, полагаемся на пользователя. Также внимательный читатель обратит внимание на то, что в первом примере использовался scr-path, а в этом примере используется url, так сделано для того, чтобы скрыть вывод команды (as-value)
Параметр ItCopy указывает на то, что мы хотим - скопировать или переименовать/переместить файл. Если указать true, то исходный файл удален не будет. Т.о. можно скопировать файл размером более 4096
Комментариев нет:
Отправить комментарий