首页 > 系统相关 >Shell脚本实现SFTP传输文件,通过密码形式

Shell脚本实现SFTP传输文件,通过密码形式

时间:2023-12-26 14:12:47浏览次数:28  
标签:Shell server sftp 传输 expect conf path SFTP

读取SFTP连接信息
cat 读取文件内容
grep server : 查找文件内容中包含server字符的,行内容
awk -F ‘=’ :实现字符串分割,分割字符’‘=’
${print $2}: 其中$2 表示切割后数组中第几值
base -d :解码base64字符串,转为可识别字符串

#sftp配置文件
sftp_conf_path=/etc/sftp.conf
#获取sftp的IP地址
sftp_ip=`cat ${sftp_conf_path} | grep server | awk -F '=' '${print $2}'`
#获取sftp的端口
sftp_port=`cat ${sftp_conf_path} | grep port | awk -F '=' '${print $2}'`
#获取sftp的用户名
sftp_user=`cat ${sftp_conf_path} | grep server | awk -F '=' '${print $2}'`
#获取sftp的密码
sftp_password=`cat ${sftp_conf_path} | grep server | awk -F '=' '${print $2}' | base64 -d`

#实现SFTP传输
/usr/bin/expect << EOP
#每次执行sftp命令超时时间,如果设置过小会导致大文件传输不完整, 单位:秒
set timeout 10000

#执行连接SFTP
spawn sftp -oPort=${sftp_port} ${sftp_user}@${sftp_ip}
#反馈字符串包含 passowrd,则发送密码
expect {
"*password:" { send "${sftp_password}\r" }
}
#SFTP cd到本地文件目录
expect "sftp>"
send "lcd ${out_path}\r"

#SFTP cd到sftp服务器下
expect "sftp>"
send "cd ${sftp_path}\r"

#SFTP 将lcd目录下文件,传输到cd目录下
expect "sftp>"
send "put ${gz_file}\r"

#关闭SFTP连接
expect "sftp>"
send "bye \r"
EOF

if [ $? -eq 0 ]; then
echo "文件传输成功”
else
echo "文件传输失败!"
fi
#退出sh脚本
exit 0

————————————————
版权声明:本文为CSDN博主「swg321321」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/swg321321/article/details/126560378

标签:Shell,server,sftp,传输,expect,conf,path,SFTP
From: https://www.cnblogs.com/cheyunhua/p/17928006.html

相关文章

  • 【PowerShell】Powershell脚本中的密码安全
    方法一使用"凭证管理器"1.1创建Windows凭证的普通凭证:1.2使用powershell获取凭证信息PSD:\>Get-StoredCredential-Target1111Get-StoredCredential:Theterm'Get-StoredCredential'isnotrecognizedasanameofacmdlet,function,scriptfile,orexecutablep......
  • PoE交换机传输距离是多少?100米?250米?
    你们好,我的网工朋友。今天和你聊聊PoE交换机,之前有系统地给你讲解过一篇,可以先回顾一下哈:《啥样的交换机才叫高级交换机?这张图告诉你》为什么都说PoE交换机好?它最显著的特点就是:可以用一根网线同时传输数据和供电,不再需要昂贵电源和安装电源,很大程度上节省了费用和时间。这就自然会......
  • shell脚本之定期杀非活session连接
    !/bin/bashORACLE_SID="testdb"ORACLE_HOME="/u01/app/oracle/product/11gR2/db"INACTIVE_TIMEOUT=60#非活动超时时间(秒)设置Oracle环境变量exportORACLE_SIDexportORACLE_HOME连接到Oracle数据库sqlplus-S/nolog>>/home/oracle/kill_session_output.......
  • Unity3D UDP传输大文件怎么提高速度详解
    Unity3D是一款强大的游戏开发引擎,但是在处理大文件传输时,往往会遇到速度较慢的问题。本文将详细介绍如何通过使用UDP协议来提高大文件传输的速度,并给出相应的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的......
  • powershell中使用hyper-v 命令代码
    PowerShell中使用Hyper-V挂载、分离、创建和格式化VHD的代码:挂载VHD文件:powershell#挂载VHD文件Mount-VHD-Path"C:\test\disk.vhd"分离VHD文件:powershell#分离VHD文件Dismount-VHD-Path"C:\test\disk.vhd"创建VHD文件:powershell#创建10GB的VHD文件,并存......
  • 哥斯拉又一个webshell利器
    哥斯拉是继菜刀、蚁剑、冰蝎之后的又一个webshell利器,这里就不过多介绍了。GitHub地址:https://github.com/BeichenDream/Godzilla很多一线师傅不太了解其中的加解密手法,无法进行解密,这篇文章介绍了解密的方式方法,主要补全了网上缺少的ASP流量分析、PHP解密脚本和C#解密脚本。运行......
  • re | 通过C语言编写shellcode(vc6)
    re|通过C语言编写shellcode(vc6)接上一篇博客:https://www.cnblogs.com/Mz1-rc/p/17923224.html对上文中代码进行修改,不使用全局字符串,不使用外部函数调用,关闭/GZ编译选项(栈检查):#include<stdio.h>#include<windows.h>typedefint(WINAPI*PMESSAGEBOXA)(HWNDhWnd,LPCST......
  • HBase Shell操作&Flink写入HBase
    一、HBaseShell操作1、基本操作1)进入HBase客户端命令行[root@bigdata1hbase]$bin/hbaseshell2)查看帮助命令hbase(main):001:0>help3)查看当前数据库中有哪些表hbase(main):002:0>list2、表的操作1)创建表hbase(main):002:0>create'student','i......
  • Shell中的变量
    Shell,是一个脚本编程语言1.定义变量2.执行命令:echo ls cd cp3.if判断逻辑,while循环逻辑4.自定义的函数Shell中的变量:实例:#!/bin/sh#定义变量OUTDIR=/opt#使用变量 echo "outputto:${OU......
  • Linux Shell: 写程序 翻译单词
    脚本#!/usr/bin/python3......