亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node交互式的SFTP上傳實(shí)現(xiàn)過程剖析

 更新時(shí)間:2022年08月09日 10:54:57   作者:鯉魚粉lyf  
這篇文章主要為大家介紹了Node交互式的SFTP上傳實(shí)現(xiàn)過程剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

由于業(yè)務(wù)的原因,我們?nèi)粘5臏y(cè)試環(huán)境,都是通過腳本,將本地打包的代碼,進(jìn)行SFTP上傳到對(duì)應(yīng)的測(cè)試機(jī)目錄的(這個(gè)業(yè)務(wù)在測(cè)試環(huán)境沒有CI/CD)。

最近由于安全問題,測(cè)試機(jī)的權(quán)限被收緊了,需要進(jìn)行交互式的SFTP(即上傳時(shí)需要用到令牌做二次校驗(yàn))。

存在問題

此項(xiàng)目用的 ssh2-sftp-client 作為SFTP上傳插件,主要是通過自定義的webpack-plugin,在構(gòu)建完之后進(jìn)行SFTP上傳。

因?yàn)樵瓉淼膕tfp配置,是不支持交互式SFTP的,導(dǎo)致運(yùn)維修改安全策略后,我們無法通過構(gòu)建命令直接上傳測(cè)試機(jī),只能通過SFTP工具進(jìn)行拖拽上傳,相當(dāng)影響工作效率

查閱資料

通過ssh2-sftp-client的文檔,發(fā)現(xiàn)是沒有交互式相關(guān)的配置的。而ssh2-sftp-client是基于ssh2的,通過查閱ssh2的文檔,發(fā)現(xiàn)是支持type:keyboard-interactive(交互式鏈接的類型)的。

然后就發(fā)現(xiàn)有ssh2-sftp-client 存在以下issue:

Whether to support keyboard-interactive parameters

作者描述:

You can add any event listener you want with the on() method, so you should be able to setup keyboard interaction listeners that will gather the information. You will also need to set the tryKeyboard property to true in the connect config object.

意思就是,因?yàn)椴寮莃ase ssh2 的,我們可以用ssh2對(duì)象的事件監(jiān)聽,然后我們?cè)谂渲面溄訒r(shí),也可以通過配置來進(jìn)行鏈接配置。

最后的實(shí)現(xiàn)

我們將上傳拆分成三個(gè)步驟

  • 安全令牌詢問
  • 交互式校驗(yàn)監(jiān)聽
  • 創(chuàng)建交互式類型鏈接
//引用 ssh2-sftp-client庫
const Client = require('ssh2-sftp-client')
// 第一步詢問令牌
const { interactivePassword } = await inquirerList.interactivePassword()
    if (!interactivePassword) {
      throw new Error('請(qǐng)輸入校驗(yàn)令牌')
    }
let sftp = new Client()
// 交互式校驗(yàn)監(jiān)聽
sftp.on('keyboard-interactive', function(
  name,
  instructions,
  instructionsLang,
  prompts,
  finish
) {
  finish([interactivePassword]) //將第一步的令牌填入
})
//創(chuàng)建交互式類型鏈接
await sftp.connect({
  type: 'keyboard-interactive', //設(shè)置類型
  tryKeyboard: true,
  host: 'xxxxx',
  port: 'xxxxx',
  username: 'xxxxx',
  password: 'xxxxx',
})

總結(jié)

通過上述代碼,就能夠通過node實(shí)現(xiàn)交互式的SFTP功能

參考文獻(xiàn)

ssh2-sftp-client issue#327

ssh2的github倉庫

以上就是Node交互式的SFTP上傳實(shí)現(xiàn)過程剖析的詳細(xì)內(nèi)容,更多關(guān)于Node交互式SFTP上傳的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論