首页
学习
活动
专区
工具
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.7K20

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

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

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

我在远程主机上上设置过一个叫做file_replbash别名。当我使用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...总之,要运行一个名叫llbash别名,可以运行下面命令: $ssh-tvivek@server1.cyberciti.biz-ic'll'结果为: 下面是我一个shell脚本例子: #!

64130

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.2K20

面试官:哥们儿,你做过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...脚本内容说明: 通过linuxscp远程传输命令,将服务器A(192.168.101.40)指定(/home/data/)路径文件传输到服务器B(192.168.101.90)指定(/home/

85320

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

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

1.5K00

如何使用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

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

73060

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

2K31

在CentOS7上搭建Jenkins+Maven+Git持续集成环境方法

准备工作 1.1 安装 Java 环境 Jenkins 是基于 Java 开发持续集成工具,需要在 Java 环境下运行。...切换成功后,命令提示符用户名可能是 bash-4.2$,想要正常显示用户名的话,先切换回 root 用户,执行以下操作: 编辑文件 vi ~/.bash_profile 加入语句 export PS1...='[u@h W]$’ 立即生效 source ~/.bash_profile 再切换到 jenkins 用户,就显示正常了。...注意此处如果提示无法读取仓库,有可能是: 公钥没有添加到远程代码服务器 authorized_keys 文件里,上面配置 SSH 免登录是 Jenkins 访问应用服务器,Jenkins 访问代码服务器也同样需要配置...其中 Jenkins 两次远程操作都是通过 SSH 完成

85130

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

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

3.8K20

『高级篇』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.7K20

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...部分改为执行脚本 这个时候Tomcattmp目录下已经有了项目的war包 ls /tmp/*.war tmp/gameoflife.war 并且也已经解压完成根据脚本操作自动部署到了Tomcat

89010

Jenkins构建Maven项目

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

1.4K20

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

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

3.7K10

Linux|WSL打造Windows下更顺畅双系统之终篇

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

31510

安装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.3K20
领券