日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux】scp“免密” 远程copy较多文件

發(fā)布時間:2024/6/21 linux 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux】scp“免密” 远程copy较多文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、linux腳本實現(xiàn)自動輸入密碼

使用Linux的程序員對輸入密碼這個舉動一定不陌生,在Linux下對用戶有嚴格的權(quán)限限制,干很多事情越過了權(quán)限就得輸入密碼,比如使用超級用戶執(zhí)行命令,又比如ftp、ssh連接遠程主機等等,如下圖

那么問題來了,在腳本自動化執(zhí)行的時候需要輸入密碼怎么辦?比如你的腳本里有一條scp語句,總不能在腳本執(zhí)行到這一句時手動輸入密碼吧

針對于ssh或scp命令,可能有人會回答是建立信任關(guān)系,關(guān)于建立ssh信任關(guān)系的方法請自行百度Google,只需要兩行簡單的命令即可搞定,但這并不是常規(guī)的解決方案,如果是ftp連接就沒轍了,況且,你不可能為了執(zhí)行某些命令去給每個你要連接的主機都手動建立ssh信任,這已經(jīng)偏離了今天主題的本意,今天要說的是在腳本里自動輸入密碼,我們可以想象下,更優(yōu)雅的方式應(yīng)該是在腳本里自己配置密碼,當屏幕交互需要輸入時自動輸入進去,要達到這樣的效果就需要用到expect.

1.安裝?expect

sudo apt-get install expect

2.測試腳本myscp

#!/usr/bin/expect set timeout 20if { [llength $argv] < 2} {puts "Usage:"puts "$argv0 local_file remote_path"exit 1 }set local_file [lindex $argv 0] set remote_path [lindex $argv 1] set passwd your_passwdset passwderror 0spawn scp $local_file $remote_pathexpect {"*assword:*" {if { $passwderror == 1 } {puts "passwd is error"exit 2}set timeout 1000set passwderror 1send "$passwd\r"exp_continue}"*es/no)?*" {send "yes\r"exp_continue}timeout {puts "connect is timeout"exit 3} }

注意,第一行很重要,通常我們的腳本里第一行是#!/bin/bash,而這里是你機器上expect程序的路徑,說明這段腳本是由expect來解釋執(zhí)行的,而不是由bash解釋執(zhí)行,所以代碼的語法和shell腳本也是不一樣的,其中set passwd your_passwd設(shè)置成你自己的密碼,然后執(zhí)行如下命令

./scp.exp ./local_file user@host:/xx/yy/

執(zhí)行前確保scp.exp有執(zhí)行權(quán)限,第一個參數(shù)為你本地文件,第二個為遠程主機的目錄,運行腳本如果報錯“connect is timeout”,可以把超時設(shè)長一點,第二行set timeout 20可以設(shè)置超時時間,單位是秒。腳本執(zhí)行效果如下

二、遠程Copy較多文件腳本version.sh

#!/bin/sh
cd /home/yunduo/Work/LittleCola_Version
#日期變量tmp
tmp=$(date +%Y.%-m.%-d)
#echo $tmp
#生成日期文件夾
mkdir -p $tmp
cd $tmp
#開始遠程copy myscp是一個免密碼輸入的expect腳本 放在/usr/bin下
myscp username@ip:~/work/littlecola/LINUX/android/out/target/product/lentk6753_65u_l1/boot.img .
myscp username@ip:~/work/littlecola/LINUX/android/out/target/product/lentk6753_65u_l1/cache.img .
myscp username@ip:~/work/littlecola/LINUX/android/out/target/product/lentk6753_65u_l1/lk.bin .
myscp username@ip:~/work/littlecola/LINUX/android/out/target/product/lentk6753_65u_l1/logo.bin .

該shell腳本中用的“myscp”就是第一部分可以實現(xiàn)自動輸入密碼的腳本,由于放置于/usr/bin/下,所以此處可直接當命令使用,

chmod 777 version.sh

./version..sh 執(zhí)行該腳本,由此完成了遠程Copy較多文件免密的腳本Test.一句話搞定!

轉(zhuǎn)載于:https://www.cnblogs.com/wucaiyun1/p/6802019.html

總結(jié)

以上是生活随笔為你收集整理的【Linux】scp“免密” 远程copy较多文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。