最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

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

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

存在問(wèn)題

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

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

查閱資料

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

然后就發(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)聽(tīng),然后我們?cè)谂渲面溄訒r(shí),也可以通過(guò)配置來(lái)進(jìn)行鏈接配置。

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

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

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

總結(jié)

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

參考文獻(xiàn)

ssh2-sftp-client issue#327

ssh2的github倉(cāng)庫(kù)

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

相關(guān)文章

  • node.js + socket.io 實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)隨機(jī)匹配聊天

    node.js + socket.io 實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)隨機(jī)匹配聊天

    這篇文章主要介紹了node.js + socket.io 實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)隨機(jī)匹配聊天,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • node-sass安裝失敗的原因與解決方法

    node-sass安裝失敗的原因與解決方法

    這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗的原因與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 如何在node環(huán)境實(shí)現(xiàn)“get數(shù)據(jù)解析”代碼實(shí)例

    如何在node環(huán)境實(shí)現(xiàn)“get數(shù)據(jù)解析”代碼實(shí)例

    這篇文章主要介紹了如何在node環(huán)境實(shí)現(xiàn)“get數(shù)據(jù)解析”代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解析Node.js異常處理中domain模塊的使用方法

    解析Node.js異常處理中domain模塊的使用方法

    這篇文章主要介紹了Node.js異常處理中domain模塊的使用方法,文中最后提到了內(nèi)存泄漏的相關(guān)問(wèn)題,值得注意,需要的朋友可以參考下
    2016-02-02
  • Node.js基于node-schedule實(shí)現(xiàn)定時(shí)任務(wù)的操作步驟

    Node.js基于node-schedule實(shí)現(xiàn)定時(shí)任務(wù)的操作步驟

    實(shí)際工作中,可能會(huì)遇到定時(shí)清除某個(gè)文件夾內(nèi)容,定時(shí)發(fā)送消息或發(fā)送郵件給指定用戶(hù),定時(shí)導(dǎo)出某些數(shù)據(jù)等,node-schedule是一個(gè)非常不錯(cuò)的npm包,可以幫助我們快速的創(chuàng)建和管理定時(shí)任務(wù),所以本文介紹了Node.js基于node-schedule實(shí)現(xiàn)定時(shí)任務(wù)的操作步驟,需要的朋友可以參考下
    2024-09-09
  • nodejs中使用archive壓縮文件的實(shí)現(xiàn)代碼

    nodejs中使用archive壓縮文件的實(shí)現(xiàn)代碼

    這篇文章主要介紹了nodejs中使用archive壓縮文件的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • node.js增刪改查保姆級(jí)教程方法

    node.js增刪改查保姆級(jí)教程方法

    這篇文章主要給大家介紹了關(guān)于node.js增刪改查保姆級(jí)教程的相關(guān)資料,node.js接口可以實(shí)現(xiàn)增加、刪除、修改和查詢(xún)操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 詳解Node.js實(shí)現(xiàn)301、302重定向服務(wù)

    詳解Node.js實(shí)現(xiàn)301、302重定向服務(wù)

    這篇文章主要介紹了詳解Node.js實(shí)現(xiàn)301、302重定向服務(wù),詳細(xì)的介紹了用Nodejs的http模塊,實(shí)現(xiàn)一個(gè)301或302重定服務(wù)。
    2017-04-04
  • 深入解析桶排序算法及Node.js上JavaScript的代碼實(shí)現(xiàn)

    深入解析桶排序算法及Node.js上JavaScript的代碼實(shí)現(xiàn)

    桶排序Radix Sort算法利用分治思想將元素分入各桶中排序后匯總,以下我們就來(lái)深入解析桶排序算法及Node.js上JavaScript的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2016-07-07
  • 搭建基于express框架運(yùn)行環(huán)境的方法步驟

    搭建基于express框架運(yùn)行環(huán)境的方法步驟

    Express提供了一個(gè)輕量級(jí)模塊,把Node.js的http模塊功能封裝在一個(gè)簡(jiǎn)單易用的接口中,這篇文章主要介紹了搭建基于express框架運(yùn)行環(huán)境的方法步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評(píng)論

刚察县| 原阳县| 闸北区| 承德县| 新化县| 南京市| 四川省| 永修县| 甘德县| 弥勒县| 广德县| 苍梧县| 河东区| 凤凰县| 安宁市| 改则县| 尉犁县| 清原| 双峰县| 岐山县| 峨眉山市| 常宁市| 定日县| 临沧市| 那坡县| 山东省| 淳安县| 葵青区| 东安县| 彭山县| 盘山县| 甘肃省| 察雅县| 山东| 蕉岭县| 饶平县| 吴桥县| 鸡东县| 曲靖市| 乌兰县| 阿荣旗|