shell腳本實現ftp上傳下載文件

来源:https://www.cnblogs.com/Clonglegs/archive/2019/08/08/11319914.html
-Advertisement-
Play Games

前段時間工作中需要將經過我司平臺某些信息核驗數據提取後上傳到客戶的FTP伺服器上,以便於他們進行相關的信息比對核驗。由於包含這些信息的主機只有4台,採取的策略是將生成的4個文件彙集到一個主機上,然後在這台主機上將文件上傳的目標ftp伺服器。 1,建立主機A到其他三台主機之間的信任關係,以便於遠程拷貝 ...


  前段時間工作中需要將經過我司平臺某些信息核驗數據提取後上傳到客戶的FTP伺服器上,以便於他們進行相關的信息比對核驗。由於包含這些信息的主機只有4台,採取的策略是將生成的4個文件彙集到一個主機上,然後在這台主機上將文件上傳的目標ftp伺服器。

1,建立主機A到其他三台主機之間的信任關係,以便於遠程拷貝文件

#生成主機A的本地認證秘鑰,可以選擇生成rsa或者dsa類型的秘鑰,這裡選取rsa
[root@A ~]#ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa >/dev/null 2>&1
#將本機的秘鑰拷貝的其他三台主機的authorized_keys文件中,由於只有三台主機,一個一個執行就行,如果主機數量多,可以使用expect腳本批量執行
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 [email protected]"
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 [email protected]"
[root@A ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 [email protected]"
#出現讓輸入B、C、D的root密碼時,輸入密碼後回車,出現如下提示時表示建立本機到目標主機的信任關係成功
Now try logging into the machine, with "ssh '-p 22 [email protected]'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

2,建立上傳文件到目標FTP伺服器的腳本

  客戶的要求是每天凌晨上傳前一天的數據,我們生成的數據文件都是以當天日期_主機名_Result.csv類型的。

#以下展示腳本的內容
[root@A getfile] cat upload_csv.sh
#!/bin/bash
#此腳本用於每天定時將生成的數據文件上傳到客戶FTP伺服器

#指定上傳文件所在的主目錄
SRCDIR=/tmp/test_jr/getfile/files/
#指定所需上傳對端FTP伺服器的目錄
DESDIR=/JRAQ_FILE/

#指定對端FTP伺服器的用戶名和密碼
USER=finftp
PASSWD="ABC@123"
#指定目標FTP伺服器的IP
IP=3.3.3.3
#指定目標FTP伺服器埠,一般都是預設
PORT=21

#指定所要上傳文件的日期
targetDay=`date -d "-1 days" +"%Y%m%d"`

#獲取所要上傳的文件
cd $SRCDIR
for host in 192.168.1.B 192.168.1.C 192.168.1.D
do
    scp root@$host:$SRCDIR/$targetDay_*_Result.csv ./
done
#判定文件是否獲取正確
[ $? -eq 0 ] || echo "Copy romote files failed, pls check." >>$SRCDIR/upload_file.log

#上傳文件到FTP伺服器
ftp -ivn <<EOF
    open $IP $PORT
    user $USER $PASSWD
    binary
    cd $DESDIR
    lcd $SRCDIR
    put ${targetDay}_*_Result.csv
    quit
EOF

#判定文件是否上傳成功
[ $? -eq 0 ] && echo "Upload $targetDay's files to romote FTP server successful." >>$SRCDIR/upload_file.log || echo "Upload files failed, pls check." >>$SRCDIR/upload_file.log

3,有可能用到的轉碼

  由於csv文件是可以用Excel打開的,但是Excel打開utf-8編碼的文件時,所有中文名稱會顯示亂碼,此時就需要用到轉碼,比如將utf-8格式轉換成gbk編碼的,Excel就可以完美打開了。

[root@A ~]iconv -futf8 -tgbk -c -o file2.csv file1.csv
#file1是待轉碼的文件
#file2是轉碼後文件名
#-f --from-code 即從那種格式轉化
#-t --to-code 轉化為那種格式
#-o --output 輸出的文件名
#-c 忽略輸出的非法字元  加這個參數是防止文件中有某些非法字元串,如果不加此參數iconv遇到非法字元串後會自動終止轉碼,即使後面還有正常的未轉碼的字元。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實例解讀面向對象核心,所有例子基於 C#,涉及我們實務中最常關心的問題: 1、封裝、繼承、多態; 2、抽象類、介面; 3、委托、事件。 三、委托和事件 通俗的說,我們使用委托的目的是“實現將方法作為參數傳遞的效果”,直接結合例子說明。 我們還是用基於上次的示例往下更改。 場景設定:根據圖形的不同,返 ...
  • 一、簡要說明 在上篇文章裡面,我們在 當中看到了許可權檢測代碼,通過註入 就可以實現許可權檢測。不過跳轉到源碼才發現,這個介面是 ASP.NET Core 原生提供的 “基於策略” 的許可權驗證介面,這就說明 ABP vNext 基於原生的授權驗證框架進行了自定義擴展。 讓我們來看一下 Volo.Abp. ...
  • [toc] SSH遠程管理 ssh功能 SSH是一個安全協議,在進行數據傳輸時,會對數據包進行加密處理,加密後在進行數據傳輸。確保了數據傳輸安全。那SSH服務主要功能有哪些呢? 1.提供遠程連接伺服器的服務 2.對傳輸的數據進行加密 Linux遠程鏈接:ssh協議(加密) telnet(明文) wi ...
  • 1.用戶與用戶組 Linux系統是一個多用戶、多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員(root)申請一個賬號,然後以這個賬號的身份進入系統。 用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問(許可權);另一方面也可以幫助用戶組織文件 ...
  • 簡介: 磁碟設備之上是文件系統,測試磁碟的工具往往就是調用塊設備驅動的介面進行讀寫測試。而文件系統的測試軟體就是針對文件系統層提供的功能進行測試,包括文件的打開關閉速度以及順序讀寫隨機位置讀寫的速度。以及進程併發數目等各個方面進行詳細的測試。 IOZone是目前應用非常廣泛的文件系統測試標準工具,它 ...
  • 方法一:通過修改.bashrc或.bash_profile文件來實現  通過修改home目錄下的.bashrc或.bash_profile文件來實現。這兩個文件選擇其中一個在末尾加入如下一行,具體操作如下: [GeekDevOps@GeekDevOps /]$ cd ~ [GeekDevOps@G... ...
  • 1、下載docker源碼包 docker官網地址: https://download.docker.com/linux/static/stable/ 選擇.tgz的包下載,例如:https://download.docker.com/linux/static/stable/x86_64/docker... ...
  • #!/bin/bash fileNum=`ls /bin/testShell/apiCheck_shell/logs/ | grep $(date "+%Y-%m-%d") | wc -w`day=$(date "+%Y-%m-%d")-${fileNum}# 設置併發的進程數thread_num= ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...