首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署

以Express为例,步骤如下: 首先通过yarn global add express-generator或npm install express-generator -g全局安装脚手架 完成后在工作目录通过命令行...但是如果此时SSH工具断开连接,就会发现express应用无法继续访问了,所以还需要一个守护进程来维持应用的启动状态,在服务端通过npm install pm2 -g来安装nodejs应用的部署管理模块...shell脚本来完成剩余的工作 涉及的几个模块包括实现SSH连接的node-ssh模块(底层是ssh2模块,这个模块是一个Promise封装),用于制作zip压缩包的archiver模块。...; process.exit(0); } }); } 4.3 远端脚本deploy.sh 当发布包上传至远程服务器后,剩余的工作在远端来完成就可以了,你只需要将后续的工作写进.../mydemo 提示: 如果脚本文件是在windows下编写的,请注意将编辑器中的回车换行改为LF,windows下通常默认是CRLF,这可能会导致脚本在linux机器上无法正常执行。

1.8K20

Python:指定 SSH-ED25519 公钥算法访问 OpenSSH-server

这在增强安全性的同时,也给一些依赖旧公钥算法的工具和脚本带来了兼容性问题。本文将探讨如何解决 Python 脚本在这种环境下无法正常连接服务器的问题。...这导致了许多工具和脚本,尤其是基于 Python 的 Paramiko 库无法正常工作,因为它们默认使用的公钥算法可能不包括 ssh-ed25519。...验证和调试连接 为了确保连接成功,可以启用调试模式查看详细的连接过程: bash ssh -vvv root@10.0.0.16 这将输出详细的调试信息,有助于识别和解决潜在的问题。 4....总结 通过上述步骤,我们能够解决由于 OpenSSH 仅支持 ssh-ed25519 公钥算法而导致的 Python 脚本无法连接的问题。...确保使用最新版本的 Paramiko 和正确配置公钥算法,可以保证脚本在更安全的 SSH 环境中正常运行。

16910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    shell脚本结合zabbix玩转故障自愈

    shell脚本结合zabbix玩转故障自愈 ---- 收到zabbix故障报警,匹配相应的规则触发不同的自愈机制.当然这个脚本功能不仅仅如此....远程执行 4. 监控url返回码,不正常时重启应用 脚本作用 利用zabbix实现故障自愈 http监控自愈 tcp端口监控自愈 微信/邮件消息通知 多方式远程批量执行 .........实现逻辑(Zabbix故障自愈) zabbix_server=>start: zabbix服务端触发告警脚本 self_recover=>operation: zabbix服务端告警(自愈脚本) analysis_alert_content...#4.3 自愈远程执行方式三: ssh expect && 自愈远程执行方式四: sshpass #sshUsername:全局ssh用户名(如规则配置不存在取全局) sshPassword:全局ssh...#runlevel:0(自定义api) 1(salt-api) 2(免秘钥ssh执行) 3(ssh expect函数执行) 4(ansible远程执行) 5(sshpass) 不存在时:取全局的runlevel

    3.1K50

    技术|通过 ssh 会话执行 bash 别名

    我在远程主机上上设置过一个叫做file_repl的bash别名。当我使用ssh命令登录远程主机后,可以很正常的使用这个别名。...然而这个bash别名却无法通过ssh来运行,像这样: $sshvivek@server1.cyberciti.bizfile_replbash:file_repl:commandnotfound我要怎样做才能通过...SSH客户端(ssh)是一个登录远程服务器并在远程系统上执行shell命令的Linux/Unix命令。它被设计用来在两个非信任的机器上通过不安全的网络(比如互联网)提供安全的加密通讯。...你不能直接执行像file_repl这样的别名: $sshuser@remotefile_repl在Unix系统上无法直接通过ssh客户端执行bash别名要解决这个问题可以用下面方法运行ssh命令: $ssh-tuser...总之,要运行一个名叫ll的bash别名,可以运行下面命令: $ssh-tvivek@server1.cyberciti.biz-ic'll'结果为: 下面是我的一个shell脚本的例子: #!

    67630

    jenkins远程部署项目

    docker ps docker ps 进入镜像命令行 docker exec -it 你的镜像ID /bin/bash bash 可以看到, 进入了镜像的bash 生成SSH密钥 这里说明一下为什么配置...ssh, 这样可以更好的免密使用git 和 免密码登录远程服务器 $ cd /root/.ssh $ ssh-keygen -t rsa -C 你邮箱 $ cat id_rsa.pub 最后一个命令后..., 可以看到这串密钥 cat id_rsa.pub 随后我们分别去github和需要远程连接的服务器的服务商(比如良心云, 套路云)那配置ssh, 这玩意我就不多说了.我是一条酸菜鱼 3.配置jenkins...会导致任务无法终治....第四句, 这里需要使用git的完整路径, 之前写cron的时候也遇到过, 执行bash, 需要使用/bin/bash, 这里执行git命令, 也需要完整路径/bin/git, 昨晚我就用git, 然后也没加最后两句终治

    1.3K20

    GitLab平台太单调? 配置Pipeline流水线,装上这个流水线“瀑布灯”!

    这实现了一个 tokenized 的工作流,保证了job的安全性。...Runner和GitLab之间通过token来验证对方身份和授权,实现了解耦和安全隔离,避免因为Runner的部署影响到GitLab的正常运行。...,使用rsync部署到远程服务器上的Ngixn目录。...免密登录,实现无感部署 使用rsync将打包结果同步到服务器 环境变量隐藏服务器信息,保证安全 完成结果部署到服务器指定目录 这样通过打包和部署两个阶段,使用脚本自动化执行,利用缓存、环境配置等特性,可以高效...最后在一次的Git提交后,可以触发打包和部署: 图片 其实点进去也可以看到具体的日志: 图片 说实话,比较难的是SSH的密钥添加部分,需要在GitLab CI作业中配置 SSH 免密登录,主要步骤: #

    2.8K10

    面试官:哥们儿,你做过linux服务器间的文件搬运程序么?

    目录 linux文件搬运 目的 过程简介 准备工作: 流程介绍: 实践方法 免密协议搭建: 1.建立A、B服务器的公钥私钥 2.建立A、B服务器的免密: 免密详细流程说明: 编写搬运脚本(三种方式):...、文件搬运和免密登录等问题; 从多种业务环境入手,以不同方式实现服务器间的文件传输; 过程简介 准备工作: 1.保证服务器之间的正常通信(可以ping通),ping不同一般出现在服务器处于不同网段或防火墙未关闭...3.编辑linux自带定时器(crontab); 通过linux定时器触发,去调用shell搬运脚本进行日常搬运工作。...如果需要相互免密,同理将serverB上的公钥(/.ssh/id_rsa.pub)内容追加到远程机器ServerA上的公钥(/.ssh/authorized_keys)中即可;另外,使用ssh-keygen...脚本内容说明: 通过linux的scp远程传输命令,将服务器A(192.168.101.40)指定(/home/data/)路径的文件传输到服务器B(192.168.101.90)指定(/home/

    88320

    如何使用Ubuntu 14.04上的Git Hooks将Hugo站点部署到生产环境

    我们要: 配置对我们的生产服务器的SSH密钥访问 将初始git存储库传输到生产服务器 将生产服务器作为git远程添加到我们的站点存储库中 让我们开始吧。...通过使用以下ssh命令询问生产服务器的主机名来测试此功能: ssh username@production_domain_or_IP cat /etc/hostname 这次不应该提示您输入密码。...git之前,您将无法测试此远程链接。...它还有助于验证脚本的主要组件是否按预期工作: bash ~/my-website.git/hooks/post-receive 这应该运行您的脚本并将普通git和Hugo消息输出到屏幕: Cloning...然后,我们创建了一个部署脚本,只要我们从开发计算机将新内容推送到服务器,就会触发该脚本。 我们的部署系统中涉及的实际机制是相当基本的。

    2K20

    shell脚本快速入门之-----深入介绍Expect免交互

    免交互:自动化处理的前提条件 一、Expect概述 Expect是建立在tc|基础.上的一个工具,Expect 是用来进行自动化控制和测试的工具。主要解决shelI脚本中不可交互的问题。...对于大规模的linux运维很有帮助 在linux运维和开发中,我们经常需要远程登录服务器进行操作,登录的过程是一个交互的过程,可能会需要输入yes/no,password等信息。...send 代替人为输入指令—> interact /expect eof $argv参数数组 Expect脚本可以接受从bash传递的参数,可以使用 [lindex argv n] 获得,n从0开始,..."$password\r"} } expect "*]#" //匹配进入后的页面 send "exit\r" //触发退出 expect eof.../b.sh tom tom123 4、案例二:SSH登录 首次登录 正常登录 连接被拒绝,可能是ssh没开,或者端口不对,或者防火墙限制 没有连接地址 - [root@localhost ~]#vim

    2.4K31

    Ansible 基础搭建配置

    一、初识Ansible 在这个风起云涌的自动化运维时代,选择一个拿手的自动化工具不仅可以解放双手,更重要的是工作效率大大提升!...Ansible特点 就目前的优势来说: ①轻量级;②不需要安装客户端,通过sshd通信;③基于模块工作,配置更加简单,容易上手。④使用Python开发。...> [-f forks] [-m module_name] [-a args] -f 启动多个个主机执行任务 -m 要使用的模块 -a 模块特有的参数 三、远程执行命令 其实在现实运维工作中,我们一般都会把一些机器定义在一个组中...五、远程执行脚本 编写一个脚本: vim ansib.sh #!.../bin/bash d=`date` echo "$d" >> /tmp/ansi.txt 把本地的脚本copy到远程机器: ansible testhost -m copy -a "src=/tmp

    76460

    Jenkins+Gitlab+Maven+Tomcat实现自动集成、打包、部署

    地址 报错:无法进行链接 添加凭证 查看gitlab服务器上的密钥 选择刚才创建的凭证 构建触发器 选择当GitLab的项目中代码变化时,Jenkins进行构建任务...图中的URL是在GitLab的设置中需要使用的 点击触发器中的“高级”,生成一串token值,用于GitLab与Jenkins集成使用 Build 执行构建时,对项目进行打包...To git@192.168.1.10:root/game.git * [new branch] master -> master 分支 master 设置为跟踪来自 game 的远程分支...登录到Jenkins查看终端输出是否成功 报错:主机密钥验证失败,使用scp命令也执行失败,这是因为Jenkins页面执行的命令是通过jenkins用户来执行的,所以免密登录应该给jenkins...部分改为执行脚本 这个时候Tomcat的tmp目录下已经有了项目的war包 ls /tmp/*.war tmp/gameoflife.war 并且也已经解压完成根据脚本的操作自动部署到了Tomcat

    1.1K10

    『高级篇』docker之gitlab和jenkins-CICD流程(43)

    触发一系列的流程,最后可以看到新代码的效果(机器内容优先,只做到镜像的打包推送)。...请查看jenkins,因为本身gitlab里面的微服务比较多,选择其中的一个服务吧,新建一个任务名称:user-edge-service,允许url远程触发构建任务。 ? ?...Jenkins中的Job配置里缺少 触发远程构建(例如,使用脚本) 选项的 ? 如图所示的功能没有出现在Job配置页面,这是由于权限问题导致的: ? 关闭防止跨站点请求伪造 ?...进入102的主机上 docker ps docker exec -it d918e00a583f /bin/bash ssh-keygen -t rsa -C "394498036@qq.com" cat...jenkins完成推送到官网镜像 创建build-imge文件 docker login登录到docker仓库中(之前已经说过了,我的机器内存比较小,无法启动私有的docker仓库我通过的官网的,不管哪个都在

    2.8K20

    如何在远程服务器上运行Jupyter Notebooks?

    作为一个工具,Jupyter Notebook可以通过交互方式简化数据分析、模型建模和实验,从而缩短从编码到查看结果的反馈循环,从而提高工作效率。...如果处于这种情况,可以通过在笔记本电脑上编写一个python脚本来设置实验,在数据的一小部分上运行它来验证它是否可以运行,将它复制到远程服务器,然后从命令行执行它。...您甚至可以在笔记本中设置实验,并使用jupyter nbconvert将笔记本导出到脚本中——以编写您的“notebook.ipynb”脚本。...退出按钮 通过命令行 如果无法升级到具有退出按钮的新版本Jupyter,或者只是更喜欢通过终端工作,也可以从命令行停止服务器。...这允许您使用常用的CTRL+C键盘命令关闭笔记本服务器。 梳理你的工作流程 记住所有这些命令可能非常麻烦。幸运的是,我们可以通过为每个命令创建bash别名来简化工作。

    3.9K20

    Jenkins构建Maven项目

    拉取代码 编译打包 远程部署 Pipeline Script from SCM(强烈推荐) 构建细节 常用的构建触发器 触发远程构建 其他工程构建后触发 定时构建 轮询SCM(不建议) Git Hook...找到Publish over SSH,新增SSH Servers: 添加远程服务器的配置信息: ---- 创建项目 配置源码管理,从Gitee或者Github或者Gitlab上拉取代码 编译打包...● Pipeline支持两种创建方法:可以直接在Jenkins的Web UI界面输入脚本,也可以通过创建一个Jenkinsfile脚本文件放入到项目源代码库中(推荐)。...steps里面是shell脚本,git拉取代码,ssh远程发布等任意内容。...● 在项目中引用该文件: ---- 构建细节 常用的构建触发器 ● Jenkins内置4种构建触发器: ○ 触发远程构建。

    1.5K20

    Linux|WSL打造Windows下更顺畅的双系统

    一是搜索bash打开: 二是通过Win10的命令行模式,打开cmd之后运行bash命令,就可以进入Linux系统: 三是通过开始菜单栏打开安装的Linux系统或搜索Linux系统名,比如我使用的Ubuntu...开启远程接入 不管是通过cmd运行bash,还是开始菜单栏运行Linux系统,在使用中不是很方便,比如复制粘贴、记录log等等,都无法很舒爽的实现。...开机自启动WSL的ssh服务 在使用的过程中发现一个问题,就是每次Windows系统重启后,都需要打开Linux系统,然后开启ssh服务后才能再次远程登录,完全没有了什么便利性。...多次尝试后找到了其解决办法,就是通过Windows开机自启动功能调用一个子系统里的脚本来实现,具体设置如下。...首先,要在Linux系统里写一个脚本,并通过chmod命令给脚本添加运行权限,脚本内容如下: echo "的密码>" | sudo -S /usr/sbin/service ssh start

    3.7K10

    Z投稿|Zabbix+自定义脚本实现网元登录检查自动化

    ,给运维工作带来了极大的效率提升与便捷。...使触发器动作能正常执行还得执行如下操作 root用户执行visudo添加如下配置,意为zabbix用户可免密码sudo执行其他用户下的脚本 %zabbix ALL=(ALL) NOPASSWD: ALL.../nxxx_xxxxx_ssh_ir &' 如果触发动作后提示Remote commands are not enabled.则需要如下操作开启远程脚本 vi /usr/local/etc/zabbix_agentd.conf...以上配置了两个依赖关系,就是当采集代理正常时才让这些触发器工作,因为采集代理出问题时,网元肯定是连不上的,采集代理出问题了,有采集代理的触发器及动作完成自动处理及通知。...通过以上方式实现 正常大粒度巡检,有异常时小粒度多次确认后执行结果 ? ?

    1.6K20

    安装ansible以及简单使用

    ansible特点: 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,centos...] # 主机组的名称,可自定义,以下的ip为该组内机器的ip 192.168.77.128 ---- 24.17 ansible远程执行命令 完成了ssh密钥认证以及主机组的配置之后就可以通过ansible.../bin/bash echo `date` > /tmp/ansible_test.txt 2.然后把该脚本分发到远程机器上: [root@server ~]# ansible testhost -m...755的权限,不然无法被直接执行。...3.最后是通过shell模块执行远程机器上的shell脚本: [root@server ~]# ansible testhost -m shell -a "/tmp/test.sh" 192.168.77.128

    3.6K20
    领券