無(wú)視跳板機(jī)進(jìn)行scp

簡(jiǎn)介


在有些公司中,為了安全考慮,在向服務(wù)器傳輸文件的時(shí)候,需要通過跳板機(jī)中轉(zhuǎn)文件,在這種情況下,上傳一個(gè)文件到服務(wù)器需要兩個(gè)步驟:1.通過rz命令將文件上傳到跳板機(jī) 2.登錄跳板機(jī),然后在跳板機(jī)上通過scp命令將上傳的文件傳輸?shù)阶罱K的目標(biāo)服務(wù)器。利用這個(gè)方式上傳文件夾時(shí),需要將文件夾壓縮打包,而且兩個(gè)步驟比較繁瑣。該腳本的功能是,向服務(wù)器傳輸文件時(shí),將跳板機(jī)中轉(zhuǎn)文件的過程自動(dòng)化,最終效果感覺不出跳板機(jī)的存在。

腳本代碼


#!/usr/bin/expect
set relay_password "password" # 登錄relay的密碼
set worker_password "worker"  # 登錄目標(biāo)服務(wù)器的密碼
set proxyCommand "-o ProxyCommand=ssh -q username@relayhost -W %h:%p"  # 登錄relay的用戶名和地址
if {$argc == 2} {
   set option -r
   set src [lindex $argv 0]
   set dst [lindex $argv 1]
} elseif {$argc == 3} {
   set option [lindex $argv 0]
   set src [lindex $argv 1]
   set dst [lindex $argv 2]
} else {
   puts "usage: scp \[-12346BCpqrv\] \[-c cipher\] \[-F ssh_config\] \[-i identity_file\]"
   puts "           \[-l limit\] \[-o ssh_option\] \[-P port\] \[-S program\]"
   puts "           \[\[user@\]host1:\]file1 ... \[\[user@\]host2:\]file2"
   exit 1
}
spawn scp $proxyCommand $option $src $dst
set timeout 2
expect {
      "username@relayhost's password" {   # 登錄relay自動(dòng)輸入密碼期望遇到的字符
          send "$relay_password\n"
          exp_continue
      }
      "Are you sure you want to continue connecting (yes/no)?" {
          send "yes\r"
          exp_continue
      }
      "worker@*password" {              # 登錄目標(biāo)服務(wù)器自動(dòng)輸入密碼期望遇到的字符
          send "$worker_password\n"
          exp_continue
      }
}
 expect "long@localhost*" # 標(biāo)識(shí)文件傳輸完成時(shí),期望遇到的字符
 interact

使用


如果該腳本文件名為myscp。使用例子如下:

./mycsp helloWord-1.0-SNAPSHOT.jar 用戶名@B.B.B.B:/home/worker/

原理


將以下命令自動(dòng)化

scp -o ProxyCommand='ssh -q 用戶名@A.A.A.A -W %h:%p' helloWord-1.0-SNAPSHOT.jar 用戶名@B.B.B.B:/home/worker/

用戶名@A.A.A.A : ssh 登錄relay是的用戶名和relay機(jī)器地址

用戶名@B.B.B.B : scp 到目標(biāo)服務(wù)器的用戶名和服務(wù)器地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,298評(píng)論 6 13
  • CA和證書安全協(xié)議(SSL/TLS)OpenSSH 一、CA和證書 (一) PKI(Public Key Infr...
    哈嘍別樣閱讀 1,517評(píng)論 0 0
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,169評(píng)論 2 33
  • 1.Linux下如何用命令查看實(shí)時(shí)日志(完整命令) tail -f 路徑.log查看前多少行 tai-200f 路...
    qianyewhy閱讀 2,549評(píng)論 0 11

友情鏈接更多精彩內(nèi)容