$Date: 2024/10/16 19:42:43 $
�@���}�n���[�^�[�� Lua �X�N���v�g �i �Q�l�F lua.org �� �z�[���y�[�W �j �����s�ł��܂��BLua �X�N���v�g�Ƀ��}�n���[�^�[��p API �ߍ��ނ��ƂŁA���[�^�[�̏�Ԃɉ����āA���[�^�[�̐ݒ�ύX��A�N�V�������v���O���~���O���邱�Ƃ��\�ɂȂ�܂��B�Ⴆ�A���̂悤�ȃX�N���v�g���쐬�ł��܂��B
�@�Ȃ��A���}�n���[�^�[��p API ��������̃y�[�W�Ō��J���Ă��܂��BAPI �͐����lj����Ă����\��ł��B�܂��A���}�n���[�^�[���������Ă��� Lua �̃o�[�W������ 5.1.4 �܂��� 5.1.5 �ł��B�ڍׂ� Lua �X�N���v�g�@�\�o�[�W�����̕ύX�������Q�Ƃ��Ă��������B
���}�n���������Ă��� Lua ����̎d�l�ɂ��ẮALua ����̕��@�����C�u���������Q�Ƃ��Ă��������B�܂��ALua �`���[�g���A���̓v���O���~���O���S�Ҍ����̃`���[�g���A���ł��B
�I���W�i���� Lua ����̎d�l�ɂ��ẮALua 5.1 Reference Manual ���Q�Ƃ��Ă��������B
FUNC�{�^�������ڂ��ꂽ�@����g�p����ꍇ�́ADOWNLOAD�{�^����FUNC�{�^���ɓǂݑւ��Ă��������B
���}�n���[�^�[�ł͈ȉ��̋@�킨��уt�@�[���E�F�A�ŁALua �X�N���v�g�@�\���T�|�[�g���Ă��܂��B
�@�� | �t�@�[���E�F�A |
---|---|
YSL-V810 | ���ׂẴ��r�W���� |
vRX�V���[�Y | |
RTX3510 | |
RTX1300 | |
RTX1220 | |
RTX830 | |
NVR510 | |
NVR700W | |
RTX1210 | |
RTX5000 | |
RTX3500 | |
FWX120 | |
RTX810 | |
NVR500 | |
RTX1200 | Rev.10.01.16�ȍ~ |
SRT100 | Rev.10.00.52�ȍ~ |
Lua �X�N���v�g�@�\�o�[�W�����̕ύX�����ƁA�e�@��̃t�@�[���E�F�A���r�W�����Ƃ̑Δ�\�ł��B
_RT_LUA_VERSION | �ύX���e | �Ή��t�@�[���E�F�A | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
YSL-V810 | vRX VMware ESXi�� | vRX Amazon EC2�� | vRX ������̃N���E�h�� | RTX3510 | RTX1300 | RTX1220 | RTX830 | NVR510 | NVR700W | RTX1210 | RTX5000 | RTX3500 | FWX120 | RTX810 | NVR500 | RTX1200 | SRT100 | ||
"1.0" | ���������[�X | Rev.1.03.01 �ȍ~ |
Rev.19.01.06 �ȍ~ |
Rev.19.00.01 �ȍ~ |
Rev.19.02.10 �ȍ~ |
Rev.23.01.01 �ȍ~ |
Rev.23.00.03 �ȍ~ |
Rev.15.04.01 �ȍ~ |
Rev.15.02.01 �ȍ~ |
Rev.15.01.02 �ȍ~ |
Rev.15.00.02 �ȍ~ |
Rev.14.01.05 �ȍ~ |
Rev.14.00.08 �ȍ~ |
Rev.14.00.08 �ȍ~ |
Rev.11.03.02 �ȍ~ |
Rev.11.01.04 �ȍ~ |
Rev.11.00.06 �ȍ~ |
Rev.10.01.16 �ȍ~ |
Rev.10.00.52 �ȍ~ |
"1.01" |
�ȉ��̋@�\��lj�����
|
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.10.01.22 �ȍ~ |
Rev.10.00.56 �ȍ~ |
"1.02" |
�ȉ��̋@�\��lj�����
|
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.10.01.24 �ȍ~ |
�� |
"1.03" |
�ȉ��̋@�\��lj�����
|
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.11.00.13 �ȍ~ |
�� | Rev.10.00.60 �ȍ~ |
"1.04" |
�n�[�h�E�F�A���C�u�����ŁAUSB�L�[�{�[�h��USB�o�[�R�[�h���[�_�[�̏o�͂�ǂݎ���悤�ɂ��� |
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.11.00.16 �ȍ~ |
Rev.10.01.32 �ȍ~ |
�� |
"1.05" |
�ȉ��̕ύX������
|
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.11.01.06 �ȍ~ |
Rev.11.00.20 �ȍ~ |
Rev.10.01.42 �ȍ~ |
Rev.10.00.61 �ȍ~ |
"1.06" | LuaSocket�ɑΉ����� | �� | �� ��LuaSocket�ɂ͔�Ή� |
�� ��LuaSocket�ɂ͔�Ή� |
�� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.11.01.09 �ȍ~ |
�� | �� | �� |
"1.07" | rt.command ���ŁA�R�}���h���s�̃��O���o�͂��邩�ۂ����w��ł���悤�ɂ��� | �� | �� | �� | �� | �� | �� | �� | �� | �� | �� | Rev.14.01.11 �ȍ~ |
Rev.14.00.18 �ȍ~ |
Rev.14.00.18 �ȍ~ |
Rev.11.03.13 �ȍ~ |
Rev.11.01.25 �ȍ~ |
Rev.11.00.28 �ȍ~ |
Rev.10.01.65 �ȍ~ |
- |
"1.08" |
�ȉ��̕ύX������
|
- | �� | �� | �� | �� | �� | �� | Rev.15.02.03 �ȍ~ |
Rev.15.01.09 �ȍ~ |
Rev.15.00.10 �ȍ~ |
Rev.14.01.26 �ȍ~ |
Rev.14.00.26 �ȍ~ |
Rev.14.00.26 �ȍ~ |
- | - | - | - | - |
Lua �X�N���v�g�@�\�o�[�W�����̐V�����t�@�[���E�F�A�́A��{�I�ɈȑO�̃o�[�W�����ŃT�|�[�g����@�\���܂݂܂��B�ڍׂ� Lua ����̕��@�����C�u���������Q�Ƃ��Ă��������B
(*1) DOWNLOAD �{�^���ڋ@��A����сASRT100�ł́ADOWNLOAD�{�^������̎��s�p�̃^�X�N�������A9�̃^�X�N���p�ӂ���Ă��܂��B
�Ǘ����[�U�[�����Ń��[�^�[�Ƀ��O�C������ lua �R�}���h�����s������ADOWNLOAD �{�^�����������ƂŎw�肵�� Lua �X�N���v�g���J�n�����邱�Ƃ��ł��܂��Blua �R�}���h �� Lua �W���� lua �R�}���h�I�v�V�����̂����A�W������ �i stdin �j ���X�N���v�g�̓��͑ΏۂƂ��� -i / - �I�v�V������A�p�����[�^�Ȃ��̎��s�ɂ͑Ή����Ă��܂���BLua �X�N���v�g���J�n�������i�ɂ͎��̂��̂�����܂��B
lua �R�}���h�̎��s������L�ɋ����܂��B
# lua usb1:/sample.lua
# lua -e 'for i = 1, 10 do rt.command("no ip filter " .. i) end'
# lua -e 'rt.command("clear log")' -e 'rt.syslog("info", "�X�N���v�g�J�n")' usb1:/sample.lua
lua �R�}���h�́A�w�肵�� Lua �X�N���v�g���J�n������g���K�[�ɉ߂��Ȃ����߁ALua �X�N���v�g�̏I����҂����ɃR�}���h�v�����v�g���Ԃ�܂��B���̂��߁A����R���\�[���ォ��A���I�ɓ��R�}���h�����s���ĕ����� Lua �X�N���v�g�𗧂��グ�邱�Ƃ��\�ł��B�������A�����ɑ��s�\�� Lua �X�N���v�g�̏������ 8 �ł��BLua �X�N���v�g�@�\�ł� 1 �x�� lua �R�}���h���s�ɂ� 1 �� Lua �^�X�N�����蓖�Ă��邽�߁A�����ɑ��s���Ă���X�N���v�g�̐����� Lua �^�X�N���g�p����邱�ƂɂȂ�܂��B�Ȃ��A�i�� �R�j �̂悤�ɁA1 �x�� lua �R�}���h�ŕ����� Lua �X�N���v�g���w�肷��ꍇ�́A������ Lua �X�N���v�g�� 1 �� Lua �^�X�N���Ŏw�肵�����ԂɎ��s����܂��BLua �X�N���v�g�̑��s��Ԃ�ߋ��̎��s�Ȃǂ� show status lua �R�}���h����m�F�ł��܂��B�܂��A���s���� Lua �X�N���v�g�������I�����������Ƃ��́Aterminate lua �R�}���h ���g�p���܂��B
���s���� lua �R�}���h�� Lua �X�N���v�g�̒��ɕ��@�G���[���������ꍇ�́AINFO �^�C�v�̃G���[���b�Z�[�W�� SYSLOG �ɏo�͂���A�X�N���v�g�̎��s�����f����܂��B
[SYSLOG��] 2009/09/21 12:20:07: lua: mail.lua:26: 'rt.mail': 'text' field value of argument #1 is invalid.
�܂��A�X�N���v�g�t�@�C���̏d���`�F�b�N���͍s���Ȃ����߁A�����ɓ���̃X�N���v�g�t�@�C�����w�肵�� lua �R�}���h�����s�����ꍇ�́A����̃X�N���v�g�t�@�C���������� Lua �^�X�N�ő��s���邱�ƂɂȂ�܂��B����~�X�������ꍇ�́Aterminate lua �R�}���h �ŕs�v�� Lua �^�X�N�������I�������Ă��������B
DOWNLOAD �{�^���ɂ����s�ɂ��� ( DOWNLOAD �{�^���ڋ@��A����сASRT100 ������ )
DOWNLOAD �{�^������̓X�N���v�g�t�@�C���� 1 �������s�����邱�Ƃ��ł��܂��Blua �R�}���h�̂悤�ȕ��G�ȑ���͍s���܂���B
DOWNLOAD �{�^�����g�p���� Lua �X�N���v�g���J�n������ꍇ�� 1 �� Lua �^�X�N�������蓖�Ă��܂���B�������Alua �R�}���h �̎��s���Ɋ��蓖�Ă��� 8 �� Lua �^�X�N�Ƃ͕ʂ� DOWNLOAD �{�^����p�� Lua �^�X�N���p�ӂ��Ă��邽�߁Alua �R�}���h �p�� Lua �^�X�N�ɋ������Ă��ADOWNLOAD �{�^������ Lua �X�N���v�g���J�n�����邱�Ƃ��ł��܂��BDOWNLOAD �{�^���ɂ����s���@�ɂ��ĉ��L�ɏq�ׂ܂��B(��1)
(��1) DOWNLOAD �����v���Ȃ��@��ł́ADOWNLOAD �����v�̓_���A�_�ł͂���܂���B
(��2) FUNC�{�^�������ڂ���Ă���@��ł́Aoperation button function func�R�}���h���g�p���Ă��������B
�풓�^�� Lua �X�N���v�g�ɂ���
��p�� Lua �^�X�N�Ŏ��s����邽�߁A�v���O�����ɏI�����Ȃ��풓�^�� Lua �X�N���v�g�𑖍s�����邱�Ƃ��\�ł��BLua �^�X�N�� CPU ���\�[�X�̎g�p�ɐ�����݂��Ă��܂����A���s����X�N���v�g�̓��e�ɂ���Ă� CPU �g�p���� 100% �߂��オ�邱�Ƃ�����܂��B���������āA�X�N���v�g�v���O�����̕��ł� CPU �g�p���������Ȃ�Ȃ��悤�Ȕz�����K�v�ł� �i ���ӎ��� �Q�� �j�B
�X�N���v�g�t�@�C���̓��[�^�[�����̃t���b�V�� ROM �i RTFS �j�A�܂��́A�O���������ɕۑ��ł��܂��BRTFS �Ƃ́A���[�^�[�����̃t���b�V�� ROM ��ɍ\�z����Ă���t�@�C���V�X�e���̂��Ƃł��Blua �R�}���h�� operation button function download �R�}���h(��)�ŃX�N���v�g�t�@�C�����w�肷��ꍇ�́A���̊i�[�ꏊ���p�X�A�������́A���ϐ� PWD ����̑��p�X�Ŏw�肵�܂��B��p�X�w��ł́A�O�����������w���t�@�C���p�X�ɂ͓��ڂ��Ă���O���������|�[�g�ɏ]�� "usb1:" �A "sd1:" �Ƃ����悤�ȃv���t�B�b�N�X��t���܂��B�O���������������v���t�B�b�N�X���L�q����Ă��Ȃ��ꍇ�́ARTFS �������t�@�C���p�X�Ɣ��ʂ���܂��B���p�X�w��ł́A���ϐ� PWD �ɂ��A�O���������� RTFS �̂����ꂩ�ɔ��ʂ���܂��B�Ȃ��A�X�N���v�g�t�@�C���̈Í����ɂ͑Ή����Ă��܂���B
(��) FUNC�{�^�������ڂ���Ă���@��ł́Aoperation button function func�R�}���h���g�p���Ă��������B
�t�@�C���V�X�e���̑�����@�͋Z�p���� �i RTFS / �O���������̗��p �j ���Q�l�ɂ��Ă��������B
# lua /lua/sample.lua
# lua usb1:/lua/sample.lua
# operation button function download execute lua usb1:/lua/sample.lua
# lua sample.lua
�i�� �S�j �́APWD �� "/lua" ���ݒ肳��Ă���� �i�� �P�j �Ɠ����Ӗ��ɂȂ�A"usb1:/lua" ���ݒ肳��Ă���� �i�� �Q�j �Ɠ����Ӗ��ɂȂ�܂��B
�܂��ALua �W�����ɂ���t�@�C������n�������l�Ƀ��[�^�[�����̃t���b�V�� ROM �A�܂��́A�O����������ΏۂƂ��邱�Ƃ��ł��A���ꂼ��̃f�o�C�X��Ńt�@�C���̐����Ɠǂݏ������s���܂��B�t�@�C������n���̈����̃t�@�C�����ɂ���p�X�Ƒ��p�X���g�p�ł��܂��B�Ȃ��A�t���b�V�� ROM �ւ̕p�ɂȏ������݂̓f�o�C�X�̏��Ղ𑁂߂邱�ƂɂȂ�̂ŁA�J��Ԃ��t���b�V�� ROM �ւ̏������݂��s���悤�ȃX�N���v�g�̎��s�ɂ͒��ӂ��Ă������� �i ���ӎ��� �Q�� �j�B
-- �X�N���v�g fdr, err = io.open("/in_file.txt", "r") if (not fdr) then print(err) os.exit(-1) end fdw, err = io.open("usb1:/out_file.txt", "w") if (not fdw) then print(err) fdr:close() os.exit(-1) end str = fdr:read("*a") fdw:write(str) fdr:close() fdw:close()
��`�ς݃t�@�C���f�B�X�N���v�^�̕W������ �i stdin �j / �W���o�� �i stdout �j / �G���[�o�� �i stderr �j �ɂ͑Ή����Ă��Ȃ����߁A�������w�肷�邱�Ƃ͂ł��܂���B�������ALua �W������ print( ) ���͎g�p�\�ł��Bprint( ) ���̏o�͐�� lua �R�}���h�����s�������[�^�[�R���\�[���ɂȂ�܂����ALua �X�N���v�g�� schedule at �R�}���h�A�܂��́ADOWNLOAD �{�^�����g���K�[�ɂ��Ď��s���ꂽ�Ƃ��� print( ) ���ł͉����o�͂���܂���B
���}�n���[�^�[���������Ă��� Lua �̃o�[�W������ 5.1.4 / 5.1.5 �ł��BLua 5.1.4 / 5.1.5 ���T�|�[�g���Ă���W�����̂����A���}�n���[�^�[�ł͎g�p�ł��Ȃ�����g�p���@�ɐ����������������܂��B�����ɋ������Ă��Ȃ����͕W���̎d�l�Ŏg�p�\�ł��B
�g�p�ł��Ȃ���
�g�p���@�ɐ����������
Lua �W���ł� "_VERSION" �̂悤�ɗ\��ς݂̃O���[�o���ϐ�������A�����̓X�N���v�g���ł��̕ϐ������w�肷�邾���ŎQ�Ƃ��邱�Ƃ��ł��܂��B�����ł̓��[�^�[�p�ɐV���ɒlj����Ă���\��ς݂̃O���[�o���ϐ��ɂ��Đ������܂��B
_RT_LUA_VERSION
_RT_LUA_VERSION_NUM
�x�[�X�ƂȂ� Lua �̃o�[�W���� �i _VERSION �j ���炳��ɁA���[�^�[�Ǝ��̃J�X�^�}�C�Y�����������@�\�̃o�[�W�������ݒ肳��Ă��܂��B���@�\�̏��������[�X���� _RT_LUA_VERSION �ɂ� "1.0" �Ƃ��������ݒ肳��Ă���A���@�\�̎d�l�g����[�^�[�p API �̒lj��ɔ����A�o�[�W�����ԍ����オ���Ă����܂��B_RT_LUA_VERSION_NUM �̓o�[�W�����𐔒l�ŕ\�������̂ŁA��ꌅ�Ń��W���[�ԍ��A���Ń}�C�i�[�ԍ��������O���̐����ɂȂ��Ă��܂��B"1.0" �̏ꍇ�A_RT_LUA_VERSION_NUM == 100 �ƂȂ�܂��BAPI ��V���̃��[�^�[�t�@�[���E�F�A�Ŏg��������K�v������ꍇ�ȂǂɁA���ϐ��Ő蕪���邱�Ƃ��ł��܂��B
-- �X�N���v�g if (_RT_LUA_VERSION_NUM >= 200) then -- 2.0 �őΉ����Ă��� API ���g�� else -- 2.0 ���O�̃o�[�W�����őΉ����Ă��� API ���g�� end
_RT_FIRM_REVISION
���[�^�[�t�@�[���E�F�A�̃��r�W���������������ݒ肳��Ă��܂��B
-- �X�N���v�g a = _RT_LUA_VERSION b = _RT_LUA_VERSION_NUM c = _RT_FIRM_REVISION d = _VERSION print("_RT_LUA_VERSION : " .. a) print("_RT_LUA_VERSION_NUM : " .. b) print("_RT_FIRM_REVISION : " .. c) print("_VERSION : " .. d)
[���s����] _RT_LUA_VERSION : 1.0 _RT_LUA_VERSION_NUM : 100 _RT_FIRM_REVISION : RTX1200 Rev.10.01.12 (Fri Jul 31 17:52:51 2009) _VERSION : Lua 5.1
�悭�g���A�h���X�╶����A�������́A���[�^�[���ƂɈقȂ�ݒ�l�Ȃǂ��Aset �R�}���h�Ŋ��ϐ��ɐݒ肵�Ă������Ƃ��ł��܂��B�ݒ肵�����ϐ��� Lua �W������ os.getenv( ) �ŎQ�Ƃ��܂��BLua �X�N���v�g���e���[�^�[�ŋ��ʉ��������ꍇ�Ȃǂɕ֗��ł��B
( config ) # set GATEWAY1=172.16.1.100
-- �X�N���v�g adr = os.getenv("GATEWAY1") rt.command("ping -c 5 " .. adr)
���ɁALua �X�N���v�g�@�\�̓����ŎQ�Ƃ������ϐ��ɂ��Đ������܂��B
LUA_INIT�i�啶���w��j
LUA_INIT �ɂ́ALua �̊J�n���Ɏ��O�Ɏ��s������X�N���v�g��ݒ肵�܂��BLUA_INIT ���ݒ肳��Ă���ꍇ�́Alua �R�}���h���Ŏw�肵���X�N���v�g�̊J�n�O�ɕK�����̃X�N���v�g�����s�����悤�ɂȂ�܂��B�ݒ�l�́A�擪�� "@" ������ꍇ�̓X�N���v�g�t�@�C�����w���p�X�ƔF������A����ȊO�̓X�N���v�g������ƔF������܂��B
# set LUA_INIT=@/lua/init.lua
# set LUA_INIT='rt.command("clear log")'
LUA_INIT �̃f�t�H���g�l�͐ݒ肳��Ă��܂���B
LUA_PATH�i�啶���w��j
LUA_PATH �ɂ́ALua �W������ require( ) �� Lua �̃��W���[�������[�h���邽�߂Ɏg�p����p�X��ݒ肵�܂��BLua �ł̓��W���[�����̒u���L���Ƃ��� "?" ���g���܂����A���[�^�[�R���\�[���� "?" ����͂���ƃw���v���\������Ă��܂����߁A"?" ����͂���O�ɃG�X�P�[�v�V�[�P���X�� "\" ����͂��Ă��������B
# set LUA_PATH="usb1:/\?.lua;"
LUA_PATH ���ݒ肳��Ă��Ȃ��ꍇ�́A" ./?.lua; " ���f�t�H���g�̃p�X�Ƃ��Ďg�p����܂��B
�i���j ���@�\�ł́Arequire( ) �� C �̃��W���[�������[�h���邱�Ƃ͂ł��܂���B���������āALUA_CPATH �͎g�p����܂���B
PWD�i�啶���w��j
PWD �ɂ́A�X�N���v�g�t�@�C�����w�����p�X�̊�_�ƂȂ�p�X���p�X�Őݒ肵�܂��Blua �R�}���h���ŃX�N���v�g�t�@�C���𑊑p�X�Ŏw�肷��ꍇ�A���� PWD ����_�ɂȂ�܂��B������ " / " �͂Ȃ��Ă��\���܂���B
PWD ���ݒ肳��Ă��Ȃ��ꍇ�́A" / " �i RTFS �̃��[�g �j ���f�t�H���g�̃p�X�Ƃ��Ďg�p����܂��B
# set PWD="/lua"
���}�n���[�^�[��p API ���g�p���邱�ƂŁA���[�^�[�̑�����v���O���~���O���邱�Ƃ��ł��܂��BAPI �͐����lj����Ă����\��ł��B
Lua �������}�n���[�^�[��p API �̌��J�y�[�W
luac �R�}���h�����s���邱�Ƃ� Lua �X�N���v�g���R���p�C�����ăo�C�g�R�[�h �i ���Ԍ��� �j ���ł��܂��B�W���� luac �R�}���h�I�v�V�����̂����A�W������ �i stdin �j ����͑ΏۂƂ��� - �I�v�V�����ɂ͑Ή����Ă��܂���BLua �R���p�C���͓����� 1 �����N�����邱�Ƃ��ł��܂��Blua �R�}���h�Ƃ͈Ⴂ�A�R���p�C�����I������܂ŃR�}���h�v�����v�g�͕Ԃ�Ȃ����߁A���s���� "CTRL + C" �ŋ����I�����邱�Ƃ��ł��܂��B�Ȃ��Aluac �R�}���h�� shcedule at �R�}���h�ɂ͎w��ł��܂���B
# luac -o usb1:/script.out usb1:/script.lua
�܂��A�������ꂽ�o�C�g�R�[�h�t�@�C���� lua �R�}���h���̎��s�Ώۃt�@�C���Ɏw�肵�Ď��s���邱�Ƃ��ł��܂��B�����ł� Lua �X�N���v�g�̎��s���ׂ����������ꍇ��A�ۑ����Ă���X�N���v�g�t�@�C�����ꌩ���������ł͂��̓��e���킩��Ȃ��悤�ɂ������ꍇ�ɗL���ȕ��@�ł��B�Ȃ��A���s�Ώۂ̃��[�^�[�܂��͓���̋@���Ő��������o�C�g�R�[�h���������s�\�ł���A���s�Ώۂ̃��[�^�[�Ƃ͈قȂ�@��� Lua ���C���X�g�[������ PC ���Ő��������o�C�g�R�[�h�͎��s�ł��܂���B
# lua usb1:/script.out
���[�^�[�����̃t���b�V�� ROM �i RTFS �j �͎��s�Ώۂ̃X�N���v�g�t�@�C����ۑ�����p�r�Ƃ��Ďg�p���Ă��������B�O����������[�^�[�����̃t���b�V�� ROM �ւ̕p�ɂȏ������݂̓f�o�C�X�̏��Ղ𑁂߂邱�ƂɂȂ�̂ŁA�����ɌJ��Ԃ��������݂��s���悤�ȃX�N���v�g�̎��s�ɂ͒��ӂ��Ă��������B ���Ƀ��[�^�[�����̃t���b�V�� ROM �ɂ��ẮA�p�ɂɃt�@�C���������݂��s�������Ƃ������Ō̏�Ɏ������ꍇ�A�ۏ؊��ԓ��ł����Ă������C���̕ۏؑΏۊO�ɂȂ�܂��B
���}�n���[�^�[���������Ă��� Lua �̃o�[�W������ 5.1.4 / 5.1.5 �ł��BLua ����̎d�l�� Lua 5.1.4 / 5.1.5 �̎d�l�ɏ]���܂��BLua �W���ł͈ꕔ�� SJIS �������������肪����܂����A���̖��͏C�����Ă���A�������R�����g�ɓ��{�� �iSJIS �����j ���g�p�ł��܂��B�Ȃ��A������ϐ����ɓ��{�� �iSJIS �����j ���g�p���邱�Ƃ͂ł��܂���B
Lua �X�N���v�g�@�\�� CPU ���\�[�X�̎g�p�ɐ�����݂��Ă��܂��B���������āA�P���Ȗ������[�v�����邾���̃X�N���v�g�𑖍s�����Ă� CPU �g�p���� 100% �ɂ͂Ȃ�܂���B�������A���ׂ̍����R�}���h���J��Ԃ����s����悤�ȃX�N���v�g���ɑ������s�������肷��� CPU �g�p���������Ȃ�A���̃��[�^�[�@�\�ɉe�����y�ڂ����Ƃ�����܂��B�������[�v�̂悤�ɒ����Ԃɓn��J��Ԃ������������s�킹��ꍇ�́A�K�x�� rt.sleep( ) �����ނȂǂ��� CPU �g�p���������Ȃ�Ȃ��悤�ɒ��ӂ��Ă��������Brt.sleep( ) �̓^�X�N���x�~��Ԃɂ��܂��B
Lua ����̐��l�^��` lua_Number �́A�W���� double �^ �i 64bit�{���x���������_���^ �j ���� long �^ �i 32bit�����t�����^ �j�ɕύX���Ă��܂��Bfloat �^ �� double �^ �ŕ\������鐔�l�� ���}�n���[�^�[�� Lua �ł͈����܂���B���l�ɁAstring.format( ) �����̏����t�H�[�}�b�g�̌^�ϊ��w��q�� e, E / f, F / g, G ���g�p���邱�Ƃ͂ł��܂���B
��`�ς݃t�@�C���f�B�X�N���v�^�̕W������ �i stdin �j / �W���o�� �i stdout �j / �G���[�o�� �i stderr �j �� Lua �X�N���v�g���Ŏg�p���邱�Ƃ͂ł��܂���B
Lua �W������ require( ) �� C �̃��W���[�������[�h���邱�Ƃ͂ł��܂���B���������āA���@�\�ł� LUA_CPATH �͎g�p����܂���B
SWITCH |
|
Lua �X�N���v�g�̑��s���ɓ��R�}���h�� Lua �X�N���v�g�@�\���ɂ����ꍇ�A���s���̂��ׂĂ� Lua �X�N���v�g�͋����I�������B
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
STAT | ... �X�N���v�g������ |
MODULE | ... ���[�h �i require �j ���郂�W���[���� |
SCRIPT_FILE | ... �X�N���v�g�t�@�C�����܂��̓o�C�g�R�[�h�t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
ARGS | ... SCRIPT_FILE �ɓn���ό��� |
��{�I�ȕ��@�� Lua �W���� lua �R�}���h�Ɠ����ł��邪�A�W������ �i stdin �j ���X�N���v�g�̓��͑ΏۂƂ��� -i / - �I�v�V�����ƁA�p�����[�^�Ȃ��̎��s�ɂ͑Ή����Ă��Ȃ��B-v �I�v�V�����̓o�[�W���������o�͂���B-- �I�v�V�����͋L�q�����|�C���g�ŃI�v�V�����������I�����邱�Ƃ�\���ASCRIPT_FILE �� ARGS �� "-" �Ŏn�܂�t�@�C��������ѕ�������w��ł���悤�ɂȂ�B�Ȃ��A-e / -l / -v �̊e�I�v�V�����͌J��Ԃ��ĕ����w��ł��邪 SCRIPT_FILE ������Ɏw�肷�邱�Ƃ͂ł��Ȃ��BSCRIPT_FILE �� 1 �����w��ł����ASCRIPT_FILE ���L�q�����|�C���g�ȍ~�̃p�����[�^�͂��ׂĖ��������B���̂Ƃ��A�G���[���b�Z�[�W�͏o�͂���Ȃ��B
SCRIPT_FILE �ɑ��p�X���w�肵���ꍇ�A���ϐ� PWD ����_�Ƃ����p�X�Ɖ��߂����BPWD �� set �R�}���h�ŕύX�\�ł���A�����l�� "/" �ł���B
SCRIPT_FILE �Ƀo�C�g�R�[�h�t�@�C�����w�肷��ꍇ�A���[�^�[��Ő��������o�C�g�R�[�h���������s�\�ł���ALua ���C���X�g�[������ PC ���Ő��������o�C�g�R�[�h�͎��s�ł��Ȃ��B
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
OUTPUT_FILE | ... �o�C�g�R�[�h�̏o�͐�̃t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
SCRIPT_FILE | ... �R���p�C���Ώۂ̃X�N���v�g�t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
��{�I�ȕ��@�� Lua �W���� luac �R�}���h�Ɠ����ł��邪�A- �I�v�V�����͎w��ł��Ȃ��B-l �I�v�V�����͐��������o�C�g�R�[�h�����X�g�\������B-p �I�v�V�����͍\����݂͂̂��s���B-s �I�v�V�����̓R�����g���̃f�o�b�O������菜���B-v �I�v�V�����̓o�[�W���������o�͂���B-- �I�v�V�����͋L�q�����|�C���g�ŃI�v�V�����������I�����邱�Ƃ�\���ASCRIPT_FILE �� "-" �Ŏn�܂�t�@�C�������w��ł���悤�ɂȂ�B�Ȃ��ASCRIPT_FILE ���w�肵�āA��̃o�C�g�R�[�h�t�@�C���ɂ܂Ƃ߂邱�Ƃ��ł���B
SCRIPT_FILE / OUTPUT_FILE �ɑ��p�X���w�肵���ꍇ�A���ϐ� PWD ����_�Ƃ����p�X�Ɖ��߂����BPWD �� set �R�}���h�ŕύX�\�ł���A�����l�� "/" �ł���B
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
INFO ... | �\��������̎�� |
|
[�\����] # show status lua Lua���C�u�����o�[�W����: Lua 5.1.4 Lua�X�N���v�g�@�\�o�[�W����: 1.0 [running] Lua�^�X�NID (���): 1 (RUN) ���s�g���K�[: 'lua' �R�}���h �R�}���h���C��: lua test.lua �X�N���v�g�t�@�C��: /lua/test.lua �J�n����: 2009/09/21 16:41:01 �o�ߎ���: 6�b ------------------------------------------------------------------------------- Lua�^�X�NID (���): 9 (SLEEP) ���s�g���K�[: DOWNLOAD�{�^������̎��s �X�N���v�g�t�@�C��: usb1:/lua/test2.lua �J�n����: 2009/09/21 16:40:32 �o�ߎ���: 35�b [history] (1) ���s�g���K�[: DOWNLOAD�{�^������̎��s �X�N���v�g�t�@�C��: usb1:/lua/mail.lua ���s��: 1 �G���[������: 1 �G���[����: 2009/09/21 16:37:51: lua: mail.lua:36: 'rt.mail': 'smtp_address' field of arg ument #1 doesn't exist. ����̊J�n����: 2009/09/21 16:37:51 �O��̊J�n����: 2009/09/21 16:37:51 �O��̏I������: 2009/09/21 16:37:51 �O��̑��s����: �G���[�I�� ------------------------------------------------------------------------------- (2) ���s�g���K�[: 'lua' �R�}���h �R�}���h���C��: lua -e "print(rt.command(\"show environment\"))" ���s��: 3 �G���[������: 0 ����̊J�n����: 2009/09/21 16:35:47 �O��̊J�n����: 2009/09/21 16:36:57 �O��̏I������: 2009/09/21 16:36:57 �O��̑��s����: ����I��
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
TASK_ID | ... �����I������ Lua �^�X�N�̔ԍ� |
|
SCRIPT_FILE | ... �����I������X�N���v�g�t�@�C�����܂��̓o�C�g�R�[�h�t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
��P�����ł́ATASK_ID �Ŏw�肳�ꂽ Lua �^�X�N�������I������BLua �^�X�N�̔ԍ�����s���Ă���X�N���v�g�ɂ��Ă� show status lua �R�}���h�Ŋm�F�ł���B
��Q�����ł́ASCRIPT_FILE �Ŏw�肳�ꂽ�p�X�ƃt�@�C���������S�Ɉ�v����X�N���v�g�����s���Ă��邷�ׂĂ� Lua �^�X�N�������I������BSCRIPT_FILE �ɑ��p�X���w�肵���ꍇ�A���ϐ� PWD ����_�Ƃ����p�X�ɒu�����ꂽ��őΏۂ� Lua �^�X�N�̌������s����B
lua �R�}���h�� -e �I�v�V�������g�p���āA�X�N���v�g�t�@�C�����g�p�����Ɏ��s����Ă���悤�� Lua �X�N���v�g�������I��������ꍇ�́A��P�������g�p����B
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
NAME | ... ���ϐ��� |
VALUE | ... �ݒ�l |
���ϐ����̖����K���͎��̒ʂ�ł���B
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | vRX�V���[�Y |
SWITCH |
|
RTX1200 �� Rev.10.01.16 �ȍ~�Ŏg�p�\�B
NVR500 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3510 |
FUNCTION ... | DOWNLOAD�{�^�������������Ɏ��s����@�\ |
|
SCRIPT_FILE | ... �X�N���v�g�t�@�C�����܂��̓o�C�g�R�[�h�t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
ARGS | ... SCRIPT_FILE �ɓn���ό��� |
FUNCTION �� execute lua ��ݒ肵���ꍇ�ASCRIPT_FILE ��K���w�肷��K�v������BSCRIPT_FILE �ɑ��p�X���w�肵���ꍇ�A���ϐ� PWD ����_�Ƃ����p�X�Ɖ��߂����BPWD �� set �R�}���h�ŕύX�\�ł���A�����l�� "/" �ł���B
RTX1200 �� Rev.10.01.16 �ȍ~�Ŏg�p�\�B
NVR500 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 |
FUNCTION ... | FUNC�{�^�������������Ɏ��s����@�\ |
|
SCRIPT_FILE | ... �X�N���v�g�t�@�C�����܂��̓o�C�g�R�[�h�t�@�C�������p�X�������͑��p�X�Ŏw�肷�� |
ARGS | ... SCRIPT_FILE �ɓn���ό��� |
FUNCTION �� execute lua ��ݒ肵���ꍇ�ASCRIPT_FILE ��K���w�肷��K�v������BSCRIPT_FILE �ɑ��p�X���w�肵���ꍇ�A���ϐ� PWD ����_�Ƃ����p�X�Ɖ��߂����BPWD �� set �R�}���h�ŕύX�\�ł���A�����l�� "/" �ł���B
RTX3510 |
ID | ... �X�P�W���[���ԍ� |
DATE | ... ���t �i�ȗ��j |
|
TIME | ... ���� |
|
TIMER | ... COMMAND �����s����܂ł̎��� ( �b�A1..3600 ) |
PEER_NUM |
|
TUNNEL_NUM | ... �g���l���C���^�t�F�[�X�̔ԍ� |
COMMAND | ... ���s����R�}���h �i��������j |
TIME �� hh:mm �`���Ŏw�肳�ꂽ�Ƃ��͕b�w��Ȃ��Ƃ݂Ȃ���Ahh:mm:ss �`���Ŏw�肳�ꂽ�Ƃ��͕b�w�肠��Ƃ݂Ȃ����B�b���� "-" ��p�����͈͎w��� "*" �ɂ��S�w������邱�Ƃ͂ł��Ȃ��B
�ȉ��̃R�}���h�͎w��ł��Ȃ��B
administrator�A administrator password�A cold start�A console info �� console prompt ������ console �Ŏn�܂�R�}���h�A date�A exit�A help�A http revision-up go�A INTERFACE reset�A less �Ŏn�܂�R�}���h�A login password�A login timer�A luac�A ping�A ping6�A pp select�A provider interface dns server�Aprovider INTERFACE name�A quit�A remote setup�A save�A schedule at�A show �Ŏn�܂�R�}���h�A telnet�Atime�A timezone�A traceroute�A traceroute6�A tunnel select
NVR500 | SRT100 | FWX120 | RTX830 | RTX810 | RTX1200 | RTX1210 | RTX1220 | RTX1300 | RTX3500 | RTX3510 | RTX5000 | NVR510 | NVR700W | vRX�V���[�Y |
schedule at 1 startup * lua /lua/restart.lua
���[�^�[�̋N������ Lua �X�N���v�g�����s����X�P�W���[����ݒ肵�܂��B���̑��A��{�I�Ȍo�H�ݒ�Ȃǂ͊��ɐݒ肳��Ă�����̂Ƃ��܂��B
-- ### restart.lua ### ------------------------------------------------------------ -- ���[�^�[�R�}���h�����s���A�o�͌��ʂ𐮌`���ĕԂ��� -- ------------------------------------------------------------ function exec_command(cmd) local rtn, str local text rtn, str = rt.command(cmd) if (rtn) and (str) then text = string.format("\"%s\"�̎��s����\r\n\r\n%s\r\n", cmd, str) else text = string.format("\"%s\"�̎��s���s\r\n\r\n", cmd) end return text end ------------------------------------------------------------ -- ���C������ -- ------------------------------------------------------------ mail_table = { smtp_address = "smtp.xxxx.co.jp", -- �K�X�ύX from = "[email protected]", -- �K�X�ύX to = "[email protected]", -- �K�X�ύX subject = "���[�^�[���ċN�����܂���" } -- �����W mail_table.text = exec_command("show status boot all") mail_table.text = mail_table.text .. exec_command("show log") -- ���[�����M rt.mail(mail_table)
��L�� restart.lua �Ƃ����e�L�X�g�t�@�C�����쐬���ARTFS �� /lua �z���ɕۑ����Ă����܂��B�ۑ����@�����������Q�Ƃ��Ă��������B
set GATEWAY=172.16.10.254 set LUA_INIT=@/lua/init.lua set PWD=/lua/tokyo ip route default gateway 172.16.10.254 ip route 192.168.1.0/24 gateway tunnel 1 ip lan1 address 192.168.2.1/24 ip lan2 address 172.16.10.1/24 ip lan2 nat descriptor 1 tunnel select 1 ipsec tunnel 101 ipsec sa policy 101 1 esp aes-cbc sha-hmac anti-replay-check=off ipsec ike always-on 1 on ipsec ike pre-shared-key 1 text PASSWORD ipsec ike remote address 1 172.16.2.1 tunnel enable 1 ipsec auto refresh on nat descriptor type 1 masquerade nat descriptor address outer 1 primary nat descriptor masquerade static 1 1 192.168.2.1 udp 500 nat descriptor masquerade static 1 2 192.168.2.1 esp
set GATEWAY=172.16.10.254 set LUA_INIT=@/lua/init.lua set PWD=/lua/tokyo
�X�N���v�g�Ŏg�p������ϐ��̐ݒ�ł��B
-- ### init.lua ### rt.command("clear log") rt.syslog("info", "[�X�N���v�g�J�n]")
��L�� init.lua �Ƃ����e�L�X�g�t�@�C�����쐬���ARTFS �� /lua �z���ɕۑ����Ă����܂��B�ۑ����@�����������Q�Ƃ��Ă��������B
-- ### ping.lua ### adr = os.getenv("GATEWAY") ------------------------------------------------------------ -- n �� PING �����s���A���X����Ԃ��� -- ------------------------------------------------------------ function exec_ping(n) local ping_cmd local rtn, str local loss ping_cmd = string.format("ping -c %s -w 0.5 %s", n, adr) rtn, str = rt.command(ping_cmd) if (not rtn) or (not str) then -- �G���[ return -1 end loss = string.match(str, "(%d+)%.%d+%%") -- �p�P�b�g���X���iNNN.N%�j�̐������𒊏o if (not loss) then loss = -1 else loss = tonumber(loss) end return loss end ------------------------------------------------------------ -- IPsec �p�P�b�g��D�悷�邽�߂� QoS ��ݒ�/��������� -- ------------------------------------------------------------ function set_qos(set) local no = "" if (not set) then no = "no " end rt.command(no .. "queue class filter 1 4 ip * * udp 500") rt.command(no .. "queue class filter 2 4 ip * * esp") rt.command(no .. "queue lan2 class filter list 1 2") rt.command(no .. "speed lan2 80m") -- ��葬�x���l�������l�� rt.command(no .. "queue lan2 type priority") rt.command("save") end ------------------------------------------------------------ -- ���C������ -- ------------------------------------------------------------ local rtn, str cnt = 1 qos = false show_cmd = "show status qos all" mail_table = { smtp_address = "smtp.xxxx.co.jp", -- �K�X�ύX from = "[email protected]", -- �K�X�ύX to = "[email protected]", -- �K�X�ύX subject = "Ping Status", text = "" } while (1) do set_qos_flag = false -- 10���ԋx�~ rt.sleep(600) text = os.date("%Y�N%m��%d�� %H��%M��%S�b�F PING ���s����\r\n") loss = exec_ping(arg[1]) if (loss < 0) then text = text .. "PING ���s�G���[" else text = text .. string.format("����:%s �p�P�b�g���X��:%d%%", adr, loss) if (loss >= 10) then if (not qos) then set_qos(true) set_qos_flag = true qos = true text = text .. "\r\nQoS ��ݒ肵�܂���" end elseif (loss == 0) then if (qos) then set_qos(false) qos = false text = text .. "\r\nQoS ���������܂���" end end end -- SYSLOG �L�^ rt.syslog("info", text) text = text .. "\r\n" -- 6 ���܂Ƃ߂ă��[���ʒm mail_table.text = mail_table.text .. text .. "\r\n" if (cnt < 6) then cnt = cnt + 1 else -- QoS �̐ݒ肪����ꍇ����"show status qos"�̏o�͌��ʂ����[���{���ɒlj� -- �������AQoS�ݒ蒼��͈Ӗ����Ȃ��̂ŏ��� if (qos) and (not set_qos_flag) then rtn, str = rt.command(show_cmd) if (rtn) and (str) then text = string.format("# %s\r\n%s", show_cmd, str) mail_table.text = mail_table.text .. text end end -- ���[�����M if (not rt.mail(mail_table)) then rt.syslog("info", "Failed rt.mail by Lua") end -- ���[�����M���I������烊�Z�b�g cnt = 1 mail_table.text = "" end end
��L�� ping.lua �Ƃ����e�L�X�g�t�@�C�����쐬���ARTFS �� /lua/tokyo �z���ɕۑ����Ă����܂��B�ۑ����@�����������Q�Ƃ��Ă��������B
# lua ping.lua 30
�����x�Ѓ��[�^�[�ɃV���A���� TELNET �o�R�Ń��O�C�����A���� PING �̑��M�� 30 ��Ƃ���Ȃ�A�R�}���h���͉�ʂŏ�L�̂悤�ɓ��͂��܂��BPWD �� "/lua/tokyo" ���ݒ肳��Ă��邽�߁A�t�@�C���p�X�� "/lua/tokyo/ping.lua" �Ɖ��߂���܂��Bping.lua �͖������[�v������̂ŁA�r���ŏI�����������ꍇ�� terminate lua �R�}���h���g���܂��B
�{�@�\�ɂ����ďo�͂���� SYSLOG ���b�Z�[�W���ȉ��Ɏ����܂��B���ۂɏo�͂���郁�b�Z�[�W�ɂ� "[LUA]" �Ƃ����v���t�B�b�N�X���t������܂��B���}�n���[�^�[��p API �ŏo�͂���� SYSLOG ���b�Z�[�W�ɂ��ẮALua �������}�n���[�^�[��p API�̃y�[�W���Q�Ƃ��Ă��������B
���x�� | �o�̓��b�Z�[�W | �Ӗ� |
---|---|---|
INFO | Lua script function was enabled. | Lua �X�N���v�g�@�\��L���ɂ����B |
Lua script function was disabled. | Lua �X�N���v�g�@�\�������B | |
DEBUG | created Lua Task(N) | Lua �^�X�N�ԍ� N �� Lua �^�X�N�������B |
terminated Lua Task(N) | Lua �^�X�N�ԍ� N �� Lua �^�X�N�������I�������B | |
closed Lua Task(N): success | Lua �^�X�N�ԍ� N �� Lua �^�X�N���I�������B���s�����X�N���v�g�͐���ɏI�������B | |
closed Lua Task(N): failure | Lua �^�X�N�ԍ� N �� Lua �^�X�N���I�������B���s�����X�N���v�g�̓G���[�I�������B |