网上搜索,可以发现大概有以下情况

1.使用expect交互

2.sshpass

但因为他们都需要安装第三方的软件,不适合我们这样的场景,我们很多时间是绝不允许安装其他软件在客户机上的.

我的场景是在本地有一个程序专门用来处理其他机器传过来的日志文件,其他机器之前使用nfs服务挂载本地的目录到本地,然后再复制过来.

现在不使用上述方法,我想到的方法如下:

1.使用curl命令来上传文件,暂时没有测试能否配合hdfs webhdfs 来完成

2.在本地机创建一个低权限的用户,然后把公共复制文件的目录权限给它一个写权限,然后生成ssh密钥.

3.在收集日志的机器中,把上述生成的私钥配置成变量,然后收集完日志后,把它生成到一个临时文件,

一定把这个文件的权限定为600,然后scp -i privatekey.file  file user@machine:/path

即可完成数据的传送.

根据我原来的设计,主程序会主动发现生成的新文件,然后通知工作线程去处理.

但它一开始会忽略以.开头的文件,其实linux系统本身也把以.开头的文件默认为隐藏文件.

我的示例文件如下,先复制过去的时候生成一个.开头的文件,然后通过ssh命令修改文件不为开头的,为了显示效果,我没有使用mv,使用了cp.

#!/bin/bash

basedir=$(cd `dirname $0`;pwd)
logfile=$basedir/test.txt echo "I am tester write something" >$logfile cat <<EOF >$basedir/aops.pf
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA3At/btU0vMsPoIlvn4KcPFnVxInTib5BQ01mqcfiL7S8gyNt
VMFIcjpI6lbEPUoVKPKVghXrdc+/oCVopci9VbEevnzon3NyMGcuwPAxakmnsNiM
+kVDbwjAus7bmpTUBDH5LAAWCPH//1OB5cEAo3QUrg79A5cAfGyAreBCBhlphnDb
27nTyK7IXaC1e6R8qN28KZ9L77Ew+xUbBKh6TeCn55WsR4pXAfq0meK1r4L0cHoy
IhS0DmnTRm6dF31VNAUyLhazqqPsKksDhMd2Wi1tWOIT2xjJACFz6rn3g9jH4BDZ
UIYzpvet8G085fSmxD4b1zAYyfGWTQnpCUYv5wIBIwKCAQEAilBeurHmoo5EVkfC
gYVMQzEnSFaiOVMEc3J7C6I2ZyEmCUl37CG4glCFmpzwYQn+rAYyF0D6Z09igeug
3TxZwNW7ja2ZiMw5Jb0zVLQ8UXAgQ0ZJ/GYNITizqJ9INUebNdZE2dQrG5DMzGBg
R0YdqJIboJu0+vEzgWjF6aLnrA7OR49Gg8vXnfBhCl3wnhhPcbVwTMy/JR0fYMG2
XXCMnPEowBC3F570OxxrjfKOAukqjveUWbel7uYSFWmePDO4C0EkpmeYvgvpmI/m
lQ6sP3yHZKrtmKk/93yxImzj6u3puJhO08eXo/r7815l6kQK2qho+cdIGjsYi83Z
/Rsd+wKBgQD7+eU1oyHEJ/vo94ry1a+aVtoakC9kDE9As776RyLHalYIZfOgDCx8
y1L3F8n42aQpJFAj+7wYfIquk6K3LgFBCPGz7JetjG4x9eE35XsnTkGcNo2QBNtw
UUoS4WNFfuUdtNasWTueFR9relf90bBtLZR0AN+H3jhekWBGprPw0wKBgQDfjxBw
OF9nJW6iG2kJqnEeHR0pH0Fx+crhRK2V4wzTL63erSpdT/g+ZEBYN4s3/8jwUXGi
I0ATlc42eXVS5sy1MHGsrSAHe3/d2Pk54LT3Mo5uGXMhHY0tGXm7mGOkg5BwhY2v
jxiv9bGxoXNuZWOcryld69lYZObWgCf2IVt4HQKBgQCsyJ0sGBcna9/wNLcM6kyH
Fvv09SfPk2mLc/Crnn4/mV+QuvAzO4w4UOhu672x9FNPaVuGY3mqZAdTI2hDGDtf
y55sv33zWPsa8b8Bwe4MUuspSfqr5hLQrMUUQse6oCgUXr8XGJ3ovgbqnQkjE3Gp
8157blAipwIU9fjf/UgwGwKBgAzGWLX0l7zAT3b6QIQ1oBBZb2FvgBUkN3qWNc4M
+WsnS8OU3dlySLMbq+fIqN6g5ukpObF+W27VXD2gilyCN5VTObIYhXzFOoG0oIb2
5cT7kxw79/NDhGj6JDaa/mEsFuHbvvQWzjXwyFNLDekNG6KNqpenE7vogjgklJG4
w2XzAoGAOOEStVlsqR7mDF2nIeiRZQP00i/Qj4uoI5/7jkwwj95Oz/hbquF7Rcpz
JIlWBx5qBAxkax4pYIegmErEXTPG5BL8ajLMEDwyaKhzs7shxMOriYqBFHfNQnK/
ii2hq941g4wZkeRRrMUQIdZXkvCv+IqqNI9x9NQTg7TAFBoUsCM=
-----END RSA PRIVATE KEY-----
EOF chmod 600 $basedir/aops.pf scp -i $basedir/aops.pf $basedir/test.txt aops@192.168.162.136:/home/aops/test/.test.txt
ssh -i $basedir/aops.pf aops@192.168.162.136 "cp /home/aops/test/.test.txt /home/aops/test/test.txt" rm -f $basedir/test.txt rm -f aops.pf

scp无密码访问scp -i的更多相关文章

  1. linux ssh scp无密码登录

    一. 应用场景 假如你Linux Client是客户端, Server为服务器,用户名为user.现在要配置从Client到Server的无密码SSH登录或者无密码的scp拷贝. 例如客户端Clien ...

  2. [linux] scp无密码拷贝

    源服务器为s,ip为111.111.111.112. 目标服务器为d, ip为111.111.111.111 1>在源服务器新建用户 test_s, useradd test_s -g user ...

  3. ssh key scp命令 scp无密码传输

    ssh ~/.ssh/目录下通常有个文件 [root@user .ssh]# ll 总用量 16 -rw-------. 1 root root 552 11月 16 02:48 authorized ...

  4. Linux服务器SSH无密码访问

    1.编辑Hosts文件: [root@yqtrack-elk01 /]# vim /etc/hosts

  5. SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器

    1. 从一台 Linux 机器(ubuntu1)上无密码访问其它机器(ubuntu2) (1)登录 ubuntu1 并切换到用户比如 s1 (2)运行 ssh-keygen -t rsa (3)运行c ...

  6. 实现liunx之间无密码访问——ssh密匙

    环境描述 两台linux服务器 172.16.1.22[client],172.16.1.33[server],想要实现client服务器ssh无密码访问server服务器. 使用技术 linux 的 ...

  7. ssh无密码访问设置(ssh-keygen 的详解)

    [原文链接]http://blog.csdn.net/wh_19910525/article/details/7433164 为了让两个linux机器之间使用ssh不需要用户名和密码.所以采用了数字签 ...

  8. Linux配置本地无密码访问

    本机配置无密码访问基本操作步骤: 1.ssh-keygen (效果同ssh-keygen -t rsa 一样,也可以ssh-keygen -t dsa) 2.ssh-copy-id -i ~/.ssh ...

  9. 【转】linux之cp/scp命令+scp命令详解

    linux之cp/scp命令+scp命令详解   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... dire ...

随机推荐

  1. Struts2_day01--Struts2的核心配置文件_常量配置_分模块开发_Action编写方式

    Struts2的核心配置文件 1 名称和位置固定的 2 在配置文件中主要三个标签 package.action.result,标签里面的属性 标签package 1 类似于代码包,区别不同的actio ...

  2. php如何互换一个数组的首尾元素 中间不变 首尾互换

    群里有人提出一个问题 如何互换一个数组的首尾元素 中间不变 首尾互换 代码如下: <?php $array=array(1,2,3,4,5,6,7,8,9,10); $first=array_s ...

  3. Javascript实现图片的预加载的完整实现

    图片预加载是web开发中一种应用相当广泛的技术,比如我们在做图片翻转显示等特效的时候,为了让图片在转换的时候不出现等待,我们最好是先让图片下载到本地,然后在继续执行后续的操作.今天我们将来实现一个完整 ...

  4. 【黑金原创教程】 FPGA那些事儿《概念篇》

    简介一本讲述非软硬片上系统的书,另外还是低级建模的使用手册. 目录[黑金原创教程] FPGA那些事儿<概念篇>:File01 - 结构的玩笑[黑金原创教程] FPGA那些事儿<概念篇 ...

  5. 【POJ3565】ANTS KM算法

    [POJ3565]ANTS 题意:平面上有2*n个点,N白N黑.为每个白点找一个黑点与之连边,最后所有边不交叉.求一种方案. 题解:KM算法真是一个神奇的算法,虽然感觉KM能做的题用费用流都能做~ 本 ...

  6. 『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于AD)

    一.进管理中心,创建一个应用程序,配置如下: 二.填端口号,和选择form身份认证,以及填写成员和角色,其他都默认就可以了 三.使用SharePoint 2010 Management Shell在里 ...

  7. List<Integer>.remove()的一个小细节

    不废话,先上代码: ArrayList<Integer> col = new ArrayList<Integer>(); System.out.println("In ...

  8. LAMP集群项目五 nfs存储的数据实时同步到backupserver

    tar fxzsersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ mv GNU-Linux-x86 sersync cp sers ...

  9. ORACLE WITH AS 用法,创建临时表

    语法: with tempName as (select ....) select ... –针对一个别名with tmp as (select * from tb_name) –针对多个别名with ...

  10. Python--进阶处理2

    # ===================第二章:字符串和文本====================== # -----------------使用多个界定符分割字符串--------------- ...