关闭

linux编程实践经验sshpass、md5sum、ssh

203人阅读 评论(0) 收藏 举报

做计算开软件开发的一定对linux操作系统不陌生,那么linux中的两个命令md5sum、ssh登陆方式也一定使用过。在这里给大家分享下我做开发时碰到的两个问题。一个是怎样解决ssh需要通过输入获取密码,另一个是怎样在java中正确调用md5sum命令。这两个都是我亲自实践过保证好用的,如果大家还有什么不理解的欢迎留言交流

工具/原料

  • linux操作系统

  • 计算机

方法/步骤

  1. 首先介绍一下使用md5sum命令生成md5文件,这个命令是linux系统自带的命令,会根据文件内容生成对应的md5文件。原理就不解释了,大家自己百度或者google一下就知道。这里给大家分享的是怎样在java程序中正确使用该命令呢。我第一次是这样做的:

    Runtime.getRuntime().exec("md5sum test.txt > test.txt.md5");

    但是却没有生成我要的test.txt.md5文件。原因是用上面的方式md5sum后面的“test.txt > test.txt.md5”被当做一个字符数据传输给了md5sum文件,因此导致生成md5文件失败。大家一定很关心怎样能够通过java成功调用md5sum命令生成自己要的md5文件。下面就来看看吧。

  2. 那就是把上面的命令以字符数组的形式传递,同时显示的用sh去执行这个命令,具体用法如下:

    Runtime.getRuntime().exec(new String[]{"sh","-c","md5sum test.txt > test.txt.md5"});

    注意,sh和-c是必须有的,告诉程序以sh方式执行该命令。这里还有一点和大家分享,就是当大文件要生成对应的md5文件时,要sleep一下主线程,不然直接调用结果的md5文件可能获取不到,因为大数据文件md5sum命令执行需要时间,所以需要sleep操作。

    linux编程实践经验sshpass、md5sum、ssh
  3. 下面说说ssh吧,做开发的应该都用过。大家在做日志分析的时候是否碰到过要从其他的服务器拉取日志文件来做访问统计呢,如果有这个需要,那就有必要了解下了。同一个服务架设在多台服务器上怎样进行日志分析?一般是采用把相同服务在多台机器产生的log日志文件拉到一台机器上进行统一处理。那linux机器之间怎么做呢?一种是建立机器之间的信任关系,这时候不需要通过ssh登陆来获取文件,但这样操作风险性太高,不安全,所以op一般是不会统一这样做的。那还有没有其他方式呢?当然有啊,方法总比困难多啊。

  4. 4

    要不通过ssh直接登陆怎样获取呢?那就是通过一个叫sshpass的工具软件,该软件的具体使用大家自己上网上百度或者google吧。我在这里不详细解释,只给大家演示一下我是怎样通过sshpass来获取我要获取的机器上的日志文件的。

    其实很简单,就是下面的命令:通过sshpass输入你的密码 然后通过scp就可以从你需要的机器上拉取日志文件了!注意这种方式最大的好处是可以写到shell里面,不需要通过终端来每一次交互都输入密码了!就是说你的shell中直接通过下面的命令就能轻松搞定拉取日志文件的问题了,是不是很简单,自己实际练习一下吧。有问题或者不同的欢迎留言交流

    sshpass -p my_password scp -r $2:$SOURCE_PATH/$1.log.$date $LOCAL_LOG_PATH/$1.log.$3.$2

    linux编程实践经验sshpass、md5sum、ssh
    END

注意事项

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:563次
    • 积分:10
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章存档