#Linux

使用Java自动登录需要动态密码的堡垒机

Published at November 16, 2018 ·  1 min read

公司的生产服务器买了QiZhi Technologie的堡垒机,每次登录都得输入密码+空格+OTOP验证码,都得打开手机APP操作一把,烦不胜烦。 不可忍,想了想,还是借助Java在每次调用时自动生成验证码,然后搞个ssh自动登录(别问我问啥不用公钥,哪有权限啊)得了。 结合之前写的博客 TOTP算法Java版本,很容易就写出计算验证码的代码: public long getCode(String secret, long timeMsec) throws Exception { Base32 codec = new Base32(); byte[] decodedKey = codec.decode(secret); long t = (timeMsec / 1000L) / 30L; for (int i = -window_size; i <= window_size; ++i) { long hash; try { hash = verify_code(decodedKey, t + i); return hash; } catch (Exception e) { e.printStackTrace(); } } return 0L; } 写一个类,专门调用这个方法生成验证码,获取程序执行结果 java -Dfile.encoding=UTF-8 -classpath /soft/tool/authcode/ GoogleAuthTest ,接下来,要实现自动登录就简单多了,先写一个shell...


Linux 下获取文件创建时间

Published at October 7, 2018 ·  2 min read

在Linux里,用户层面并没有文件创建时间的概念,无论是用ls还是stat 指令,都无法获取到文件的创建时间 [tudou@tudou-pc statx]$ stat test-statx.c 文件:test-statx.c 大小:6656 块:16 IO 块:4096 普通文件 设备:805h/2053d Inode:6684737 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 1000/ tudou) Gid:( 1001/ tudou) 最近访问:2018-10-07 13:16:29.000000000 +0800 最近更改:2018-10-07 13:21:09.855461986 +0800 最近改动:2018-10-07 13:21:09.855461986 +0800 创建时间:- 可以看到「创建时间」一行总是「-」。 如果我们使用百度的话,会看到很多文章说,最近改动时间就是创建时间。的确,我们拿很多文件试验了下,这个最近改动时间(Change Time)确实和创建时间很相近,然而Change time并不是Create time,它实际是文件属性修改时间。 试一下即知: [tudou@tudou-pc 下载]$ ./statx ~/.face statx(/home/tudou/.face) = 0 results=fff Size: 7589 Blocks: 16 IO Block: 4096 regular file Device: 08:05 Inode: 5505043 Links: 1 Access: (0644/-rw-r--r--) Uid: 1000 Gid: 1001 Access: 2018-09-16 01:15:52....


linux下解压bin文件

Published at June 2, 2018 ·  1 min read

现在的一些Linux软件很流行使用bin这种安装包格式,只需要下载个安装包就能自动安装解压,比tar.gz省事,比.deb,.rpm的安装包兼容性强,适应范围广。但也有一个问题,bin安装包让人无法知道里面的细节,还是有所顾虑的。比如我前几天需要下载一个JRE6,但Oracle官方在JDK7之前都没有tar.gz包,只有bin包。我肯定不能直接安装bin文件啊,这会破坏我本机已有的JDK8开发环境。 怎么从bin文件里提取出原始安装包呢?其实很简单。用vi打开一个bin文件就知道了,bin文件其实就是一个sh文件和二进制文件的合并文件,前面一段是sh命令,负责实际的安装,它会提取后半部分的二进制数据,后半部分一般是个压缩文件包或者自解压文件的二进制流。 vi jre-for-linux.bin 可以看到,第一行是 #!/bin/bash 接下来就是一堆安装和设置环境变量,提取解压部分了,最关键的部分在这几行 outname=install.sfx.$$ tail ${tail_args} +162 "$0">$outname chmod +x $outname 继续往下看,267行是exit 0,从第268行开始,就是一堆看似乱码的二进制了,到这里那就清晰多了 # 从268行起提取二进制文件 tail -n +268 jre-for-linux.bin >install.sfx # 因为是sfx格式,就用7z解压 7z x install.sfx 到此解压成功。手动安装,使用export设置临时变量,就用上了JRE6了。...