当前位置:  软件>JavaScript软件

远程执行命令 Flightplan

    来源:    发布时间:2014-12-25

    本文导语:  Flightplan 可以在本地或者远程主机上运行一序列的命令。这是一个 Node.js 库,用于执行应用发布和系统管理任务,类似 Python 的 Fabric。 示例代码: // flightplan.js var Flightplan = require('flightplan'); var tmpDir = 'pstadler-sh-' + new ...

Flightplan 可以在本地或者远程主机上运行一序列的命令。这是一个 Node.js 库,用于执行应用发布和系统管理任务,类似 Python 的 Fabric

示例代码:

// flightplan.js
var Flightplan = require('flightplan');

var tmpDir = 'pstadler-sh-' + new Date().getTime();

// configuration
plan.briefing({
    debug: false,
    destinations: {
        'staging': {
            host: 'staging.pstadler.sh',
            username: 'pstadler',
            agent: process.env.SSH_AUTH_SOCK
        },
        'production': [
            {
                host: 'www1.pstadler.sh',
                username: 'pstadler',
                agent: process.env.SSH_AUTH_SOCK
            },
            {
                host: 'www2.pstadler.sh',
                username: 'pstadler',
                agent: process.env.SSH_AUTH_SOCK
            }
        ]
    }
});

// run commands on localhost
plan.domestic(function(local) {
    local.log('Run build');
    local.exec('gulp build');

    local.log('Copy files to remote host');
    var filesToCopy = '(git ls-files -z;find assets/public -type f -print0)';
    local.exec(filesToCopy + '|rsync --files-from - -avz0 --rsh="ssh"'
                + ' ./ pstadler@pstadler.sh:/tmp/' + tmpDir);
});

// run commands on remote hosts (destinations)
plan.international(function(remote) {
    remote.log('Move folder to web root');
    remote.sudo('cp -R /tmp/' + tmpDir + ' ~', { user: 'www' });
    remote.rm('-rf /tmp/' + tmpDir);

    remote.log('Install dependencies');
    remote.sudo('npm --production --silent --prefix ~/'
                    + tmpDir + ' install ~/' + tmpDir, { user: 'www' });

    remote.log('Reload application');
    remote.sudo('ln -snf ~/' + tmpDir + ' ~/pstadler-sh', { user: 'www' });
    remote.sudo('pm2 reload pstadler-sh', { user: 'www' });
});

// run more commands on localhost afterwards
plan.domestic(function(local) { /* ... */ });
// ...or on remote hosts
plan.international(function(remote) { /* ... */ });

// executed if flightplan succeeded
plan.success(function() {
});

// executed if flightplan failed
plan.disaster(function() {
});

// always executed after flightplan finished
plan.debriefing(function() {
});

    
 
 

您可能感兴趣的文章:

  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • linux在脚本执行命令和直接在命令行执行命令有什么区别
  • linux下nm命令(显示可执行文件的符号信息)介绍以及常见nm命令用法举例
  • 请问LINUX7.2下,哪条命令是查看系统上曾经执行过的执行命令?(包括启动以前的)
  • linux下不使用sudo命令执行docker的操作步骤
  • 为什么我明明用ls命令看到了aaa.sh可执行文件,但当我执行他时,说命令不存在,这是什么原应
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • 在B shell里怎麽执行曾经执行过的命令
  • 如何在命令行下执行一个基于命令行的软件?
  • linux下执行命令为什么要在命令前加./
  • 在C程序里面执行unix的命令的时候怎么获取执行的结果了?
  • aix系统中,at命令能否定时执行命令
  • 怎么在java程序中执行系统命令或其他可执行程序(像批处理一样)?
  • 如何知道Runtime.getRuntime.exec(...)的执行命令是否成功执行呢?
  • 很菜的问题——Linux(RedHat8)下的齿轮图标程序如何执行,是什么shell命令可以执行它?
  • 我用GCC生成的可执行文件无法直接在shell命令行下执行,这是为什么?可以用调试器调入执行。我用Red Hat7.0
  • 如何在我的C语言编写的程序里面执行命令行命令,比如ls -la ??
  • 如何让Unix定时执行一个命令?如每半个钟头执行一次。
  • 请教:使用system(命令)或者exec(命令)启动一个进程执行命令,如何判断这个命令是否启动成功或正在运行?
  • 请问shell中执行一个命令后,如何不回显其执行结果。
  • 为什么Centos装上以后,执行apt-get命令提示没有该命令?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下通过crond实现自动执行程序
  • 怎么在一个程序的执行过程中中止执行它?比如一个按钮的响应程序中,执行一半中止??20分!!!
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 如何实现一个线程组内多线程的非同不执行,即一个线程执行完毕后再执行下一个线程???
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 请问:我发现如果在/usr/local/bin 与/usr/bin下都有同一个执行文件时,当在shell下执行时,只会执行/usr/local/bin,下的,怎么改过来?
  • Mysql Select查询执行流程介绍及实例
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • 我在UNIX下用PRO*C写了个程序,每次执行都得一个多小时,我想把它放到后台执行,也就是我想交给服务器执行,而我想产掉终端窗口,应该怎么做呢
  • 怎样执行可执行文件?
  • redhat7.1下可执行文件不能执行????
  • C中用system系统调用执行command,执行过程中死锁,如何处理?
  • 请问JSP中的<jsp:forward page=""/>执行后,后边的操作还会执行吗?
  • 执行当前目录下可执行程序时前面必须要加上./才可以,如何解决?
  • 如何在LINUX中在系统启动后自动执行一个执行一个程序?
  • shell 脚本 date 手动执行 和 放在init.d中自动执行的时间不一样
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在程序中执行另外一个程序,并且当前进程依然执行?
  • 用gcc编译完的可执行文件可以双击执行吗
  • 菜鸟请教:linux 直接执行可执行文件
  • Applet 是在服务器端执行还是在客户端执行??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3