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

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試環(huán)境,都是通過腳本,將本地打包的代碼,進(jìn)行SFTP上傳到對應(yīng)的測試機(jī)目錄的(這個(gè)業(yè)務(wù)在測試環(huán)境沒有CI/CD)。

最近由于安全問題,測試機(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)建命令直接上傳測試機(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對象的事件監(jiān)聽,然后我們在配置鏈接時(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('請輸入校驗(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上傳的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

    這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗的原因與解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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í)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 解析Node.js異常處理中domain模塊的使用方法

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

    這篇文章主要介紹了Node.js異常處理中domain模塊的使用方法,文中最后提到了內(nèi)存泄漏的相關(guā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ā)送郵件給指定用戶,定時(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)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • node.js增刪改查保姆級教程方法

    node.js增刪改查保姆級教程方法

    這篇文章主要給大家介紹了關(guān)于node.js增刪改查保姆級教程的相關(guān)資料,node.js接口可以實(shí)現(xiàn)增加、刪除、修改和查詢操作,文中通過實(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算法利用分治思想將元素分入各桶中排序后匯總,以下我們就來深入解析桶排序算法及Node.js上JavaScript的代碼實(shí)現(xiàn),需要的朋友可以參考下
    2016-07-07
  • 搭建基于express框架運(yùn)行環(huán)境的方法步驟

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

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

最新評論

诸城市| 永嘉县| 谢通门县| 南投市| 剑川县| 洪江市| 迭部县| 伊春市| 太谷县| 武强县| 布拖县| 江西省| 南开区| 绥江县| 五华县| 日照市| 徐州市| 历史| 大新县| 广平县| 蒲城县| 舞钢市| 阜平县| 阿巴嘎旗| 阳山县| 交口县| 崇仁县| 姚安县| 错那县| 新平| 博罗县| 北海市| 彭山县| 四子王旗| 浪卡子县| 天镇县| 宿迁市| 鄄城县| 贵阳市| 松滋市| 灯塔市|