在linux shell中使用ftp命令来实现自动上传与下载

2023-11-11

前段时间有个需求,需要利用crontab定时往某个FTP上传文件,原以为linux中带的ftp命令只支持交互式的操作,没法在命令行下使用,所以后来打算利用PHP中提供的ftp命令来做,但是很不幸的发现ftp模块不是PHP的标准模块,还需要自己编译,比较麻烦,后来本着试试看的态度去网上搜了一把,结果发现还真是可以在shell下来利用ftp命令。

首先我们来看ftp的两个参数

-n     Restrains  ftp from attempting ''auto-login'' upon initial connection.  If auto-login is enabled, ftp will check
              the .netrc (see below) file in the user's home directory for an  entry  describing  an  account  on  the  remote
              machine.  If no entry exists, ftp will prompt for the remote machine login name (default is the user identity on
              the local machine), and, if necessary, prompt for a password and an account with which to login.

-u     Restrains ftp from attempting  ''auto-authentication''  upon  initial  connection.   If  auto-authentication  is
              enabled, ftp attempts to authenticate to the FTP server by sending the AUTH command, using whichever authentica-
              tion types are locally supported.  Once an authentication type is accepted, an authentication protocol will pro-
              ceed by issuing ADAT commands.  This option also disables auto-login.

显然默认情况下,我们不加这两个参数来使用ftp命令的话,如ftp localhost,那么就直接被要求用户名和密码,这样子就走回到交互式的老路上去了。因此要使用非交互式就必须加-n这个参数,(-u不是必须的,如果不加的话,对于一些服务器可能会报一个warning,但是不影响功能)。最终shell脚本如下所示这样子

ftp –u –n $HOST $PORT << CMDS

user $USERNAME $PASSWORD

lcd $DST_FOLDER

put $DST_FILENAME

bye

TAG

这段脚本就告诉ftp命令,不自动登陆,连接到$HOST的$PORT端口,然后依次运行TAG里标注的命令

我们这里是先运行user命令来登陆,然后进入要上传文件的目录,最后开始上传,上传完成后断开连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在linux shell中使用ftp命令来实现自动上传与下载 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 如何在之前的 Facebook 身份验证后自动安全地让用户登录?

    用户抱怨他们必须过于频繁地登录 如果身份验证完全基于 Facebook OAuth 那么用户如何在下次访问该页面时自动登录 用户流程示例 用户点击 使用 Facebook 登录 用户通过 Facebook 进行身份验证并被重定向回网站 用户
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 在 Rails 3 中选择性地关闭 Devise 的 Flash 通知

    Devise 身份验证框架在各处都使用 Flash 通知 这使得与应用程序集成变得很容易 但有时会导致用户体验不佳 我想知道有什么简单的方法可以有选择地关闭 Rails 3 应用程序中的一些 Devise flash 通知 特别是 我想摆脱
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • awk: hping: 打印 icmp 发起/接收之间的差异

    我有以下输出hping http ports su net hping在 OpenBSD 上 hping icmp ts www openbsd org HPING www openbsd org re0 129 128 5 194 icm
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 在 Linux 上更快地分叉大型进程?

    在现代 Linux 上达到与 Linux 相同效果的最快 最好的方法是什么 fork execve combo 从一个大的过程 我的问题是进程分叉大约 500MByte 大 并且一个简单的基准测试只能从进程中实现约 50 个分叉 秒 比较最
  • 存储外部站点(不使用 OAuth)的用户凭据的智能方法是什么?

    我意识到 一般来说 您不应该直接存储用户凭据 即以纯文本形式 相反 最好存储它们的某种加密形式 但是 假设我创建了一个与其他第三方网站交互的网站 假设这个第 3 方站点提供了一个 API 需要用户的凭据 使用该站点 进行身份验证 如果我的目
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内

随机推荐

  • 使用centos7搭建syslog和loganalyzer日志服务器

    主要步骤是网上根据博客来安装及排错调试 这两张帖子都写的很详细 http www ifzhai com article php id 9 https blog csdn net qq 33157780 article details 506
  • java String类(超详细,含常用方法、面试题,内存图,案例)

    String类 一 String类的特点 二 String 类的常见构造方法 三 String常见的面试题 1 字符串常量池 2 String s abc 与String s new String abc 区别 3 字符拼接 4 常量优化机
  • pgsql数据库存储过程中,批量操作数据

    82 数据库存储过程中 批量操作数据 DECLARE record row record 定义一个名为 record row 的记录类型变量 BEGIN FOR record row IN SELECT name age id card F
  • Python制作宝石消消乐小游戏

    开发工具 Python版本 3 6 4 相关模块 pygame模块 以及一些Python自带的模块 相关文件 关注公众号 Python学习指南 回复 消消乐 即可获取 环境搭建 安装Python并添加到环境变量 pip安装需要的相关模块即可
  • Unity简单几行代码让玩家水平移动更丝滑真实

    可以先来看看基础的移动代码 接收玩家的输入 然后赋予刚体速度 但是这种写法存在几个问题 下面一一纠正 首先 如果直接改变刚体的速度 那么可能会出现穿墙的问题 而且没有一种从速度0到缓慢加速的过程 那样较为机械且不真实 所以可以用物理模拟的方
  • Leetcode 448.找到所有数组中消失的数字

    448 找到所有数组中消失的数字 力扣 LeetCode 题目描述 给你一个含 n 个整数的数组 nums 其中 nums i 在区间 1 n 内 请你找出所有在 1 n 范围 但没有出现在 nums 中的数字 并以数组的形式返回结果 示例
  • openAI api 生产最佳实践

    生产最佳实践 本指南提供了一套全面的最佳实践 帮助您从原型过渡到生产 无论您是经验丰富的机器学习工程师还是最近的爱好者 本指南都应为您提供将平台成功投入生产环境所需的工具 从确保访问我们的API到设计能够处理高流量的健壮架构 使用本指南可帮
  • Python-matplotlib画图(莫烦笔记)

    https www zhihu com collection 260736383 lt 此处就不自己写了 看了遍 照着写了一边 作者写的不错 不过有些有些偷懒 我只做了常见的功能 gt 作者 触摸壹缕阳光 链接 https zhuanlan
  • 如何创建你的第一个西门子200PLC程序

    更多关于西门子S7 200PLC内容请查看 西门子200系列PLC学习课程大纲 创建西门子200PLC程序分五步 1 打开Micro WIN软件 2 新建工程 3 打开程序编辑器 4 输入程序指令 5 保存程序 我们以下图程序为例讲解西门子
  • 全栈之前端

    欢迎关注 全栈工程师修炼指南 作者 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 文章目录 0x00 前言简述 0x01 超链接标签元素 a 标签 0x02 框架标签元素 iframe 标签
  • Android性能优化 _ 把构建布局用时缩短 20 倍(下),轻松拿下offer

    scaleType ImageView ScaleType FIT XY setImageResource R drawable user portrait gender female also addView it also addVie
  • Spring Boot、Dubbo项目Mock测试踩坑与总结

    本文是对Spring Boot Dubbo项目进行Mock测试的总结与踩坑实录 搜索了一圈 居然没发现类似的文章 莫非用Dubbo的朋友们都不Mock测试 或者有其他的办法测试吗 简单总结了一下 希望对大家能有一定参考意义 如果有更好的测试
  • 小影服务器维修,轩辕传奇2月27日所有服务器停服更新公告

    尊敬的轩辕勇士们 我们计划将于2月27日上午9 00 11 00期间对所有服务器进行停服更新 在更新期间 所有服务器的玩家将暂时无法进入游戏 停服更新结束后 所有服务器的玩家将更新到最新版本 版本号为 1 11 107 2 同时 官网会在更
  • 菜鸟的刷题之路之二叉树

    成功不是终点 失败不是终结 勇气才是启程的第一步 作者 不能再留遗憾了 专栏 菜鸟的刷题之路 本文章主要内容 将有序数组转换为二叉搜索树 二叉搜索树中第K小的元素和叶子相似的树的详细题解 文章目录 将有序数组转换为二叉搜索树 题目要求 做题
  • spring boot 整合dubbo2.7.8

    由于dubbo2 7 8之前的版本有漏洞 项目需要升级至2 7 8 之前用的是阿里的dubbo 在版本切换上遇到过一些问题 特记录一下心得 首先讲下dubbo的版本 dubbo在2 6版本是阿里在管理和维护 后面交给了apache管理 2
  • Linux(一):Linux入门

    概述 Linux 是一套免费使用和自由传播的类 Unix 操作系统 Linux 英文解释为 Linux is not Unix 同时基于多用户 多任务 支持多线程和多 CPU 的操作系统 目前很多企业采用CentOS 本文后续涉及到linu
  • Make sure ‘SystemCfg‘ is registered using qRegisterMetaType

    最近在编写Qt代码的时候遇到标题上的问题 现象是 在收到一个xml字符串需要解析时 我放在线程里面处理 然后线程执行完成后将xml对应的结构体返回给主线程 在主线程的槽函数中始终接收不到 但是在子线程中emit函数是执行过的 在调试窗口中看
  • github push时提示Username for ‘https://github.com‘ 解决办法

    今天进行push的时候一直提醒我输入Username还有PassWord 还出现提示 remote Support for password authentication was removed on August 13 2021 起初我以
  • 剑指 Offer 43. 1~n 整数中 1 出现的次数

    目录 编辑 一 问题描述 二 例子 三 题目接口 四 题目解答 1 暴力解法 2 规律解法 总结 代码 一 问题描述 输入一个整数 n 求1 n这n个整数的十进制表示中1出现的次数 例如 输入12 1 12这些整数中包含1 的数字有1 10
  • 在linux shell中使用ftp命令来实现自动上传与下载

    前段时间有个需求 需要利用crontab定时往某个FTP上传文件 原以为linux中带的ftp命令只支持交互式的操作 没法在命令行下使用 所以后来打算利用PHP中提供的ftp命令来做 但是很不幸的发现ftp模块不是PHP的标准模块 还需要自