① 如何在shell腳本里使用sftp批量上傳文件
主要步驟如下:
1.為運行shell腳本的本地用戶生成密鑰對
2.將其中的公鑰分發到sftp欲登錄的遠程伺服器上
3.編寫並以上面的本地用戶運行shell腳本
一.生成密鑰對
在shell腳本中使用sftp時必須用到密鑰對(公鑰和私鑰).可使用下列方式生成(SSH 2.X版本),這里本地用戶記為:local_user:
$ ssh-keygen -dsa
屏幕提示:
Generating public/private dsa key pair.
Enter file in which to save the key (/home/local_user/.ssh/id_dsa):
# 按回車保存為: /home/local_user/.ssh/id_dsa,即當前用戶local_user的私鑰
Enter passphrase (empty for no passphrase):
# 按回車,表示讀取密鑰時不需要密鑰的密碼
Enter same passphrase again:
# 確認密鑰的密碼,必須和上面的輸入相同
Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私鑰保存信息
Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公鑰保存信息
The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密鑰指紋
二.分發公鑰
為了使用密鑰,必須將公鑰分發到欲登錄的遠程伺服器上,這里遠程伺服器記為remote_host,欲登錄的遠程用戶記為remote_user
1.公鑰到欲登錄的遠程伺服器的遠程用戶的家目錄下,例如:
id_dsa.pub到remote_host:/home/remote_user/.ssh/
若目錄/home/remote_user/.ssh/不存在,請先創建之.
2.將來的公鑰文件改名為authorized_keys
3.修改公鑰文件的訪問許可權
chmod 644 authorized_keys
三.示例
目標:
從遠程伺服器remote_host:/home/remote_user/data/
傳送下列文件到本地計算機的當前目錄: /home/local_user/data/:
20050201
20050202
20050203
20050204
20050205
方式1: 批模式
sftp提供了一個選項-b,用於集中存放sftp命令(該選項主要用於非交互模式的sftp).因此對於上面的目標,可以生成如下的命令文件:
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
這里存為: sftp_cmds.txt
說明: get命令前加一個"-"以防止其執行錯誤時sftp執行過程被終止.
以下為腳本示例:
#!/bin/sh
sftp -b ./sftp_cmds.txt remote_user@remote_host
方式二:
#!/bin/sh
sftp remote_user@remote_host << EOF
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
EOF
② 使用sftp進行文件傳輸
SFTP是SSH File Transfer Protocol的縮寫,安全文件傳送協議。SFTP與FTP有著幾乎一樣的語法和功能。SFTP為SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。
SFTP與FTP差別
只使用SFTP傳輸文件,不能使用ssh登錄系統
創建sftp用戶組
創建sftp用戶
將ChrootDirectory目錄設置為/home(所有權必須為root),然後 ForceCommand 使用-d 選項將用戶的主目錄指定為起始目錄
當前/home目錄
編輯/etc/ssh/sshd_config文件
使用SFTP客戶端,上傳文件
查看用戶home目錄
嵌套主目錄
創建目錄並設置許可權
查看當前的目錄結構
修改/etc/ssh/sshd_config文件
使用SFTP客戶端上傳文件
查看上傳的文件位置
驗證
從10.10.0.1機器登錄
10.10.0.1機器能看到所有的目錄
從其他主機登錄
其他主機只能看到限定的目錄
屬於sftp-only用戶組,但是不限制ssh及sftp
創建用戶
修改配置
驗證
ssh登錄驗證
修改sshd配置
修改 /etc/rsyslog.conf,在最後添加
SFTP 命令
③ SFTP命令中怎麼批量傳一個文件夾下的文件
先用 MD 命令建立一個文件夾 再用 PUT 命令將其餘的文件上傳吧 一個個的來
如果嫌麻煩 還是去DOWN一個FTP的客戶端軟體 如flashxp 圖形界面 選中全部一拖....
有一個方法可以達到你的要求 不過還是有些麻煩
將你所有要傳輸的的命令寫到一個文本文件中,然後用FTP的命令進行調用
所以你必須將所有上傳文件的命令寫好 雖然在記事本里寫比在CMD下寫方便 但文件多了還是比較麻煩
④ 如何設置通過sftp將文件上傳到linux指定 工具指定根目錄路徑
如果是window下上傳到linux,可以安裝個flashfxp軟體。輸入用戶密碼。就可以象ftp一樣上傳文件到linux里。。
如果是linux傳linux。。。
直接使用sftp ip 輸入用戶密碼,然後用cd ls put get等命令就可以把文件傳到相應目錄
具體命令參數可以輸入sftp --help 就可以參看了
⑤ put指定路徑指定文件
sftp上傳下載命令get/put。
lcd切換windows環境路帆攜清徑lpwd查看windows環境路徑cd切換linux環態前境路徑pwd查看linux環境路徑get下載linux資源到windowsput上傳windows資源到linux,sftp上隱孫傳下載命令get/put。
⑥ 如何在shell腳本里使用sftp批量傳送文件
1、sftp屬於交互螞碼首式的,所以你得緩存下命令
#!/bin/sh
sftp -o Port=3322 [email protected]:/模悉opt << !
mput *.log
!
2、用scp一行搞定
scp -P3322 /opt/*.txt [email protected]:/tmp
3、用rsync同步整個目錄悶數
rsync -av '-e ssh -p 3322' /data/test [email protected]:/data
⑦ CentOS使用sftp命令進行主機間文件傳輸
sftp是Secure FileTransferProtocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。sftp與 ftp有著幾乎一樣的語法和功能。SFTP為 SSH的一部分,是一種傳輸檔案至Blogger伺服器的安全方式。其實在SSH軟體包中,已經包含了一個叫作SFTP(Secure File TransferProtocol)的安全文件傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網路安全性要求更高時,可以使用SFTP代替FTP。
登錄成功後,才可以進行下面的獲取和發送操作。
1.登錄遠程賬號
2.從遠程獲取文件夾
3.退出
框內輸出exit,即退出sftp。
⑧ 在ubuntu中sftp怎麼才能夠上傳一個文件夾給伺服器,命令行代碼怎麼寫啊
get -r 為下載文件夾,put -r為上傳文件夾
⑨ 僅20行代碼,實現文件自動化上傳至sftp
最近接到一個產品需求是給指定的 sftp 服務謹友器的指定目錄定時推送文件數據。
因為項目組已有現成的組件可以輕松實現 sftp 伺服器文件的快速上傳,本來是一件很容易的事情,但是問題出現在這個指定的 sftp 伺服器所指定的密碼帶有系統關鍵字和一些特殊字元,導致現在的組件在解析過程中會失敗。
因此重新開發了下面的這套腳本來滿足這個特殊的需求。
Python代碼
sftp配置文件代碼
(1). yaml 模塊
導入 yaml 模塊前可以使用以下命令進行模塊的安裝
yaml 模塊在這里的作用是讀取 sftp 配置文件代碼,將指定key: test_file_upload 下的 key:value 的值轉換為字典。
例如:load_config_from_param_conf 函數中的返回值就是使用 yaml 讀取正晌猜到 sftp 配置文件代碼後,返回 key: test_file_upload 下配置選項值。
格式如下:
最後將返回值傳給 upload 函數作為參數。
(2). OptionParser 模塊
按照 yaml 模塊的安裝方法,先安裝 optparse 模塊後,然後在文件中從optparse 中導入 OptionParser 模塊
在這里我使用了 OptionParser 這個類實例化了一個對象:opt_parser,通過對象來調用 add_option 方法添加了2個參數,分別是:node, local_file
1). 形參:--node,實參:node
所代表的業務含義是:指定要上傳的 sftp 的節點,具體參數值對應 sftp配置文件代碼中的舉型 test_file_upload
2). 形參:--local_file,實參:local_file
所代表的業務含義是:指定本地需要被上傳到 sftp 伺服器的具體文件路徑
3). 調用命令
4). add_option()方法
參數:action的枚舉
store: 參數列表中帶有--node, 那麼就會將下一個元素即:test_file_upload 作為其 dest 實參 node 的值; 如果沒有--node,那麼對應的node的值就為 None;
store_true: 參數列表中有--local_file, 那麼其 dest 實參 local_file 的值就為 True; 否者就為 default 定義的默認值,這里沒有給定 default 的默認值;
store_false: 參數列表中有--local_file, 那麼其 dest 實參 local_file 的值就為 False; 否者就為 default 定義的默認值,這里沒有給定 default 的默認值;
參數:type
type是指定傳入參數的類型,這里的參數類型為 string 類型。
參數:dest
dest是參數傳入後由哪個變數來存儲的,後面代碼對該參數的引用也是使用這里定義的變數名來引用的。
參數:default
default 是與 action 的值結合使用的。
參數:help
help相當於幫助說明文檔,用於描述這個參數的含義。
⑩ windows 下如何使用sftp自動登錄上傳文件
1首先打開linux客戶端工具,新建一個連接
2IP地址填寫我們本機的IP地址
3創建完畢,打開剛才創建的連接進行連接
4連接打開,在命令行輸入 sfpt 伺服器IP地址
5進入用戶名填寫處,填寫我們需要傳輸文件的伺服器用戶名
6接著填寫登錄密碼
7顯示如下標志表明,已經登錄成功,使用put 文件路徑即可實現文件傳輸