使用自动 bash 脚本检查 FTP 中是否存在文件

2024-04-18

我想自动化执行以下操作的批处理作业:

  1. 检查我的file.txt存在于FTP服务器中,我将其重命名为file.trt
  2. 检查我的file.txt and file.trt存在,如果存在我发送电子邮件
  3. 我运行另一个脚本
  4. 最后我删除file.trt

这是我所做的:

#!/bin/bash
host='ftp.xxxx.com'
USER='xxxx'
PASSWD='xxxx'

ftp -n -v $host << EOF
ascii
user $USER $PASSWD
prompt
mls /TEST/file.txt test.txt
quit
EOF

if [[ $? -eq 0 ]] 
    then
        echo "The File file.txt Exists";
    else 
        echo "The File file.txt dons not Exist";
fi

我很困惑,不知道该怎么做,有人可以帮助我吗?


我这样做了并且效果很好:

#!/bin/bash
host='ftp.xxxx.com'
USER='xxxx'
PASSWD='xxxx'

FTPFile1="/TEST/file.txt"
FTPFile2="/TEST/file.trt"


#search file.txt et file.trt on the ftp server
ftp -n -v $host << EOT
ascii
user $USER $PASSWD
prompt
mls $FTPFile1 $FTPFile2 test.txt
quit
EOT

# # ----------------------------------------------------------------------------------------------------------------------# 
# # test if file.txt et file.trt are present => send mail
# # ----------------------------------------------------------------------------------------------------------------------#

if grep -inr '/TEST/file.txt' test.txt && grep -inr '/TEST/file.trt' test.txt
    then
        echo "" | mail -s "aaaaa] Error, aaaaa." [email protected] /cdn-cgi/l/email-protection -c [email protected] /cdn-cgi/l/email-protection 
        
    elif grep -inr '/TEST/file.txt' test.txt 
        then
        echo "The File file.trt does not Exist (no loading at the moment), rename file.txt to file.trt and start loading";

    # ----------------------------------------------------------------------------------------------------------------------#       
    # rename file.txt 
    #  ----------------------------------------------------------------------------------------------------------------------#

ftp -n -v $host<< EOT
    user $USER $PASSWD
    get $FTPFile1 file.txt
    rename $FTPFile1 $FTPFile2 
    quit
EOT

    else
        echo " file.txt (file not yet ready). No action to do."     
fi

# ------------------------------------#     

    ftp -n -v $host << EOT
    user $USER $PASSWD
    get $FTPFile1 file.txt
    quit
EOT

    TRT_DATE=`cat file.txt | grep -Po "[0-9]{8}"`

        
        # run my_script.sh  
              ./my_script.sh -d $TRT_DATE
    
#delete file.txt et test.txt 
rm -f file.txt test.txt

# delete file.trt
ftp -n -v $host << EOT
    user $USER $PASSWD
    delete $FTPFile2 
    quit
EOT

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

使用自动 bash 脚本检查 FTP 中是否存在文件 的相关文章

  • 是否可以使用数组中存储的关键字执行 grep 操作?

    是否可以使用存储在数组中的关键字执行 grep 操作 这是可能的代码片段 我该如何纠正它 args key1 key2 key3 cat file name while read line echo line grep q w args c
  • 如何将 FTP 目录的内容复制到共享网络路径?

    我需要将 FTP 位置上的目录的全部内容复制到共享网络位置 FTP 任务要求您指定确切的文件名 不是目录 而文件系统任务不允许访问 FTP 位置 EDIT 我最终编写了一个脚本任务 没有什么比恢复一个非常旧的线程更好的了 但是有一个解决方案
  • 为什么我的 git 自动更新 Expect 脚本不起作用?

    我想制作一个脚本来更新我所有的 GitHub 存储库 我只需要输入我的用户名和密码 脚本将遍历存储库列表 调用git push并通过补充 Expect 脚本提供必要的信息 这是我的 bash 脚本 bin bash echo Updatin
  • 从 Bash 调用的 Expect 脚本的退出状态代码

    我制作了一个 Bash 脚本 它使用 Expect 脚本来自动进行 ssh 登录 该脚本连接到多个服务器并运行一些命令 bash 脚本会提示输入一次登录凭据 我想合并一个功能 其中如果第一个服务器登录失败 脚本将终止 以避免脚本检查下一个服
  • 空格分隔值;如何提供包含空格的值

    我正在创建一个 bash 脚本来通过以下方式配置多个 Azure 资源Azure CLI https learn microsoft com en us cli azure view azure cli latest 到目前为止一切顺利 但
  • “sed” 在文件中插入反斜杠

    Tool Windows 版 Git Bash Problem 尝试在目录中每个文件的顶部插入文本 connectcentral Code for f in DIR sql do sed i 1i connect central f don
  • 在 bash 脚本中获取星期几

    我想在变量中包含星期几DOW 所以我使用以下 bash 脚本 DOM date d DOW DOM 7 sed s 0 不幸的是我收到这个错误 bash 09 command not found 变量中的预期结果为 2 9 7 2 DOW
  • C# 单文件FTP下载

    我试图在 C 控制台应用程序中使用 FTP 下载文件 但即使我知道路径是正确的 我总是收到错误消息 550 file not found 有什么方法可以返回当前路径 一旦连接到服务器 lade datei von FTP server st
  • 仅在 Azure Web 应用程序中从 FTP 下载文件失败

    我有一个非常基本的代码 可以从 FTP 服务器下载文本文件列表 foreach var fileUri in files try var ftpRequest FtpWebRequest FtpWebRequest Create fileU
  • 无法从外部 bash 脚本正确设置 MySQL 密码

    我有两个脚本 主要的一个脚本执行一些不同的操作并调用第二个脚本 第二个脚本安装 MySQL 从我的主脚本中我做了这样的事情 read p Set the password for the database min 4 characters
  • Git 责备文件中的作者列表

    有没有办法找到在 repo 中编辑 java 文件中的类的作者列表git blame 作者列表必须是唯一的 我尝试使用以下命令 但它没有删除重复项 并且每行输出中都有 作者 一词 不需要对输出进行排序 但我希望获得没有任何重复的输出 git
  • Bash,在包含子目录的目录中的每个 .jpg 文件上运行脚本

    我有一些工作代码 它非常简单 它复制每个 jpg 文件 将其重命名为 1 jpg 不用担心 for i in jpg do cp i i jpg 1 jpg done 我如何运行它 以便它适用于目录中的每个文件 该目录的子目录中的每个文件
  • 批量复制和重命名多个文件

    我想递归地批量复制和重命名目录中的所有文件 我有这样的事情 dir subdir file aa dir subdir fileb aa dir filec aa 并希望将所有文件复制如下 newdir 1 xx newdir 2 xx n
  • 如何在文件中固定数量的字符后插入换行符

    我正在寻找一个 bash 或 sed 脚本 最好是单行脚本 用它可以在巨大的文本文件中的固定数量的字符之后插入一个新行字符 像这样的事情怎么样 Change 20 是换行符之前的字符数 temp text 是要替换的文件 sed e s 2
  • 如何以非交互方式指定“psql”的密码?

    我正在尝试使用 shell 脚本自动执行数据库创建过程 但我遇到了向其传递密码的障碍psql https en wikipedia org wiki PostgreSQL Database administration 下面是 shell
  • bash:从数组中删除变量? [复制]

    这个问题在这里已经有答案了 bin bash tank one two three x two unset tank x echo tank 我想从数组中删除 x 但不知何故它删除了数组的第一个元素 我该如何解决这个问题 您有一个索引数组
  • 使用 FtpWebRequest 将文件上传到 FTP 时,远程服务器返回错误:(550)

    I need to upload file via ftp to host The home2 travele2 path created on the root of host 我可以通过 FileZilla 程序将文件上传到主机 但是当
  • 为什么 ssh-agent 需要 root 访问权限?

    我刚刚安装了 Archbang 并尝试克隆我的 Git 项目 这需要 SSH 密钥 过去 我在 Ubuntu 和 RedHat 机器上遵循 Github 指南取得了成功 但由于某种原因 它在我的新 Arch 安装上不起作用 我已使用以下命令
  • 在多台机器上并行运行脚本

    我有兴趣知道在多台机器的后台尽快启动脚本的最佳方法 目前 我正在这样做 为每个 IP 地址运行 ssh user ip t perl setup pl gt log 但这需要时间 因为它会逐一尝试通过 SSH 连接到每个计算机 以在该计算机
  • Bash:更新文件中的变量

    我知道这是一个简单的答案 在找到答案之前我可能可以继续在谷歌上进行挖掘 但我的日程很紧 我希望能得到一个轻松的答复 我需要在安装时更新 ifcfg eth0 中的变量 换句话说 这就是需要发生的事情 以下变量需要更改 ONBOOT no B

随机推荐

  • ndk-build DUMP_APP_ABI 在 Windows 上返回 2 行

    我无法在 Windows 上调试 android ndk 应用程序 它seems https stackoverflow com questions 20047348 unknown application abi while debug
  • MySQLdb 使用列表作为输入执行许多?

    我想在我的程序中使用executemany一次存储20条记录 这就是文档中所说的 c executemany INSERT INTO breakfast name spam eggs sausage price VALUES s s s s
  • 为什么实体框架在 SELECT 上生成 JOIN

    我在 C 应用程序中使用实体框架 并且使用延迟加载 我们注意到一个查询对我们的 CPU 有着极高的影响 它仅仅计算一个总和 调试实体框架生成的查询时 它会创建一个INNER JOIN SELECT 这不是高性能的 当我手动将查询更改为正确的
  • magento 付款流程..一般如何运作

    有一个问题 我希望这是问的正确地方 不太明白magento 中的付款方式 客户去结账 假设想要以客人身份付款 因此提供地址等 最后找到付款方式 然后我希望客户通过信用卡付款 已经为我选择的网关 银行 安装了模块 那时 我希望用户被重定向到第
  • Mysql 变量无法通过 php mysql 查询工作

    我有这样的疑问 query SET points 1 SET num 0 SELECT id rank num if points rank num num 1 as point rank FROM said ORDER BY rank 1
  • 调用静态方法时发生致命错误

    所以 这是我的情况 我正在使用 CodeIgniter 我已经设置了一个助手 DK 文件夹下的 string helper 我已经在 dk string helper php 中设置了 dkString 类 static function
  • 测量 OpenMP Fork/Join 延迟

    由于 MPI 3 具有共享内存并行功能 并且它似乎与我的应用程序完美匹配 因此我正在认真考虑将我的混合 OpemMP MPI 代码重写为纯 MPI 实现 为了给棺材里钉上最后一颗钉子 我决定运行一个小程序来测试 OpenMP fork jo
  • 私人变更的用例

    假设我有以下场景 我克隆了一些开源项目 例如从 URL X 克隆的项目 现在我有了它的本地克隆 我对本地克隆进行了一些更改以尝试并在本地提交它们 现在我想要的是以下内容 我想从开源项目 X 获取更新 只需获取其所有最新代码 无需我进行任何更
  • 使用 Google 进行 OWIN 身份验证

    我在 ASPNET MVC 项目上使用 owin 身份验证 使用google时遇到以下问题 1 用户使用google帐户登录 2 用户退出 3 下次用户尝试登录时 将自动使用当前的google帐户再次登录 而不提示用户是否要使用其他帐户 问
  • gdb nostop SIGSEGV 在特定线程上

    我有一个程序故意在一个线程上出现段错误 但我有一个问题 另一个线程出现段错误 我想用 GDB 捕获它 我看到我可以 handle SIGSEGV nostop noprint 但我只想在故意这样做的线程上这样做 有可能吗 我会解释一下 我有
  • extern auto 变量没有初始值设定项

    我需要在我的 C 程序中使用全局时间戳 std chrono high resolution clock now 我在头文件Header h中声明了它 include
  • Tomcat 10 上的 Spring Boot 2.x 问题

    我试图在 Tomcat Docker 容器中部署一个 war 文件 但总是得到404 Not Found页 我通过以下方式创建了 Spring Boot 项目Intellij 教程 https www jetbrains com help
  • javascript 在多个链式异步函数上等待

    假设我有以下内容 const a new A await a getB action A prototype getB is async也B prototype action 如果我尝试等待函数的链接 则会收到错误 TypeError a
  • SoapExtension 未加载

    我正在尝试写一个肥皂扩展 但框架没有加载它 我已经添加到 web config
  • 不同的Android SDK版本使用不同的图标

    我的 Android 菜单有图标 在 Android 3 上 我使用黑色 ActionBar 因此图标为白色 然而 在 Android 2 x 上 菜单本质上是白色的 这意味着图标几乎不可见 如何为不同版本使用不同的菜单图标 我假设我可以使
  • 我们如何重命名MySQL 5.0中的数据库名称[重复]

    这个问题在这里已经有答案了 我在用MySQL 5 0 我创建了一个名为accounts 但现在我想将数据库名称更改为FinanceAccounts 如何更改数据库名称MySQL 5 0 我认为只有一种方法 除了重命名 MySQL datad
  • 安全移动 Microsoft SDK 文件夹

    我的硬盘上有一个文件夹 C Program Files Microsoft SDKs 我想知道将其移动到外部驱动器是否安全 Visual Studio 或任何其他工具是否依赖于此特定文件夹 注册表中有相当多的条目 至少在我的注册表中 指向该
  • Cython指定固定长度字符串的numpy数组

    我有一个函数 我想使用 Cython 来处理大量固定长度的字符串 对于标准 cython 函数 我可以像这样声明数组的类型 cpdef double g double in arr cdef double out arr np zeros
  • 对话框的对象位置 Libgdx

    我有一个对话框 Dialog dialog new Dialog style dialog setSize 400 500 dialog setPosition Gdx graphics getWidth 2 200 Gdx graphic
  • 使用自动 bash 脚本检查 FTP 中是否存在文件

    我想自动化执行以下操作的批处理作业 检查我的file txt存在于FTP服务器中 我将其重命名为file trt 检查我的file txt and file trt存在 如果存在我发送电子邮件 我运行另一个脚本 最后我删除file trt