Некоторые картинки не загружаются из РФ и РК, используйте VPN.

пятница, 21 июля 2023 г.

Mikrotik script rename/copy file

Наибанальнейшая задача, связанная с тем фактом, что 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

Комментариев нет:

Отправить комментарий