Linux下文件传输一般有两个命令scp、ftp(工具需要下载安装)

本文主要讲讲scp的文件传输脚本

1、scp ssh-keygen -t rsa免输入密码,传输

这里假设主机A 用来获到主机B的文件。

在主机A的用户根目录下执行如下命令来生成配对密钥:

ssh-keygen -t rsa

遇到提示回车默认即可,两次回车后,显示完成。公钥被存到用户目录下.ssh目录,比如root存放在:

/root/.ssh/id_rsa.pub

将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys,

到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.100.4):

scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys (如果是集群之间实现秘钥免登录,authorized_keys里面的内容就只能累加,而不能这样直接修改文件名)

下面就可以用scp、ssh命令不需要密码来获取主机B的文件了

ssh 192.168.100.4 回车就不需要密码了。

注:其实id_rsa.pub内容添加到对方机器的authorized_keys中就行了

2、scp中使用expect 进行文件传输

脚本如下:

#!/bin/bash

time=`date +%Y%m%d_%H%M%S`
ip=`ifconfig eth0 |grep "inet addr"|awk -F ":" '{print $2}'|awk '{print $1}'` #获取机器的ip地址
if [ ! -d /tmp/back ]; then
mkdir -p /tmp/back
fi
cd /tmp/back
if [[ -d test ]]; then
rm -r -f /tmp/back
fi if [ $ = "script" ]; then #获取运行脚本是传入的参数,根据不同的参数备份不同的文件
if [ ! $ ]; then
    cp -r /home/www/scheduleshell /tmp/back #默认文件地址
  else
    cp -r -f $ /tmp/back
  fi elif [ $ = "crontab" ]; then
cp -r /var/spool/cron /tmp/back
else
echo "the words is not defined!"
exit
fi
cd /tmp/back
pwd
tar -zvcf $ip-$time-$.tar.gz ./*
/usr/bin/expect -c " #expect语句部分,根据命令行提示输入密码,没有考虑容错部分 crontab 使用的环境变量可能与我们手动执行的时候有点不一致,运行的时候加上绝对路径会好一点
set timeout 10
spawn scp -r /tmp/back/$ip-$time-$1.tar.gz root@172.*.*.176:/home/hefeng/
expect \"password:\" {send \"password\r\"}
spawn scp -r /tmp/back/$ip-$time-$1.tar.gz root@172.*.*.182:/home/hefeng/
expect \"password:\" {send \"password\r\"}
expect eof
exit #使用interact 在crontab下运行会有点问题
"
if [ $? !=0 ]; then
  echo "step for scp is failed"
  exit 0
fi
rm -r -f /tmp/back/*

Linux中crontab下scp文件传输的两种方式的更多相关文章

  1. 在本机eclipse中创建maven项目,查看linux中hadoop下的文件、在本机搭建hadoop环境

    注意 第一次建立maven项目时需要在联网情况下,因为他会自动下载一些东西,不然突然终止 需要手动删除断网前建立的文件 在eclipse里新建maven项目步骤 直接新建maven项目出了错      ...

  2. Linux经常使用的文件传输的几种方式

    Linux经常使用的文件传输的几种方式 1.终端新建stfp协议连接 或者命令方式: sftp -P22 root@192.168.11.100 端口可以不用填写,默认是22,端口的P是大写. 将本地 ...

  3. FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集

    TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置.联接的方式.甚至是是否使用相同的操 ...

  4. IOS文件操作的两种方式:NSFileManager操作和流操作

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  5. Android中EditText显示明文与密文的两种方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录输入框显示.隐藏密码的简单布局以及实现方式. 效果图    代码分析 方式一 /**方式一:*/ private void sh ...

  6. 在eclipse中使用Maven建web工程的两种方式

    Eclipse版本:Neon Release (4.6.0) Maven版本:3.3.9 第一种方式: 右键新建maven工程,勾选创建一个简单工程 填入信息,注意打包方式要改为war 点击完成,创建 ...

  7. 转载:删除github上文件夹的两种方式

    http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...

  8. .NET环境下导出Excel表格的两种方式和导入两种类型的Excel表格

    一.导出Excel表格的两种方式,其中两种方式指的是导出XML数据类型的Excel(即保存的时候可以只需要修改扩展名为.xls)和真正的Excel这两种. using System; using Sy ...

  9. java文件读写的两种方式

    今天搞了下java文件的读写,自己也总结了一下,但是不全,只有两种方式,先直接看代码: public static void main(String[] args) throws IOExceptio ...

随机推荐

  1. Volley缓存说明——一个请求两次回调

    从上一篇文章Android 异步网络请求框架-Volley了解volley的一些出来过程,当然也包含网络请求和缓存处理的流程,但是在此需要单独做一些说明. 我在使用过程中忽略了一个事情,就是一个网络请 ...

  2. 设计模式之桥接模式(php实现)

    github地址:https://github.com/ZQCard/design_pattern /** * 桥接模式 * 优点: * 1.分离抽象接口及其实现部分.提高了比继承更好的解决方案. * ...

  3. 一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter ou ...

  4. Linux expect 用法

    expect是建立在tcl基础上的一个工具,它用来让一些需要交互的任务自动化地完成. 因为expect是基于tcl的,所以需要你的系统中安装有tcl 检查是否安装tcl,expect [root@ma ...

  5. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)—— 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

  6. nodeJs-autoBulid

    /** * Created by Administrator on 2016/1/16. */ var projectData = { 'name' : 'autobulid', 'fileData' ...

  7. 求出数组中所有数字的和&&弹出层效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. JAVA_Exception starting filter struts2怎么办

    1 请确保你的项目里面有这两个文件,没有则导入   2 如果还不行,并且你设置了Struts的开发模式,并且你的Tomcat的路径有空格,大部分情况是Program File的原因,此时你需要重新安装 ...

  9. IOS URL无法对加号进行编码导致http请求时服务器端获取的内容中加号变成空格问题

    一.背景. 将以下地址请求服务器时,如果postUrl中某个参数值包含符号+  那么在服务器获取到这个参数值时,其加号变成了一个空格. NSString *postUrl = "http地址 ...

  10. CentOS——yum命令运行错误解决办法

    问题: [root@name user]# yum File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:        ...