前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「工具」sync-deploy - 让远程命令操作更简单

「工具」sync-deploy - 让远程命令操作更简单

作者头像
王诗翔呀
发布2020-07-06 17:10:04
7460
发布2020-07-06 17:10:04
举报
文章被收录于专栏:优雅R优雅R

不知道你是否也曾像我一样面对这样的问题:想要简单的在远程主机上上传下载数据文件、运行个命令,但要么需要通过ssh直接登录主机,要么需要频繁的输入ssh或scp等命令以及ip地址,密码。

sync-deploy工具集是我 2017 年在解决这样的问题以及远程部署 PBS 计算任务不便时开始写,其实质是一堆 shell 脚本。后面我又增加了一系列的功能,包括:增加主机、切换主机,批量生成(PBS)脚本等。

只要系统可以执行 shell,基本都能用这个工具,因为它的实现基本就是对 ssh 和 scp 的封装。

下面我对目前可用的命令进行简要介绍,一些详情可以阅读https://github.com/ShixiangWang/sync-deploy。

主要分为下载、配置和使用三部分,前两部分都是一次性步骤。

下载

代码语言:javascript
复制
git clone https://github.com/ShixiangWang/sync-deploy.git

下载后执行add_path.sh脚本将命令添加到环境路径中,这样无论你处于什么目录都能使用。

代码语言:javascript
复制
cd sync-deploy/src
./add_path.sh

如果是苹果系统,默认会将路径写入~/.bash_profile;如果是其他系统,默认会写入~/.bashrc。如果使用的其他sh,比如zsh,那么系统识别路径不是上述两者,可以通过-d选项指定。

除了sync-command命令没有选项,其他命令基本都有选项需要指定。

准备与配置

首先在服务器端配置本地机器的公钥,以便于实现无密码文件或命令传输。

最简单的方式是在终端键入ssh-keygen然后一路按回车键。

代码语言:javascript
复制
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/wangshx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/wangshx/.ssh/id_rsa.
Your public key has been saved in /c/Users/wangshx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XaNcpRZHmMp65eHKDzYIzbXYB0ZAb3EHYc7T3azgQD4 wangshx@wsx-liuxslab
The key's randomart image is:
+---[RSA 2048]----+
|       .o.+ **=  |
|         = *oB o.|
|         .E.@ . +|
|       o Oo@o+ . |
|      . S.*+o..  |
|       .....o    |
|        .o+.     |
|         .oo     |
|           ..    |
+----[SHA256]-----+

如果你使用的是windows7或者10,不知道怎么使用ssh,我推荐你安装git bash,windows10用户也可以开启Ubuntu子系统以便于使用。

将公钥id_sra.pub(本地机器.ssh子目录下)中文本内容拷贝到服务器.ssh子目录中的authorized_keys中,放在已有文本后面。如果该文件不存在则创建。

进行测试,如果不需要密码登录则成功。

然后点击打开当前目录(src/)的sync-setting文件,将远程主机的host名与ip地址改为你自己的(也可以使用后面的sync-hostadd命令)。

如果ssh服务还没有开启,请参考https://www.linuxidc.com/Linux/2015-01/112045.htm解决。

使用

使用可以分为4种类型:

  • 上传/下载文件
  • 运行命令或脚本
  • 增加/删除以及切换主机
  • PBS任务计算

下面我列出对应的命令,使用非常简单,可以通过命令 + h选项的方式阅读使用说明(除了sync-command),比如sync-download下载文件(文件夹):

代码语言:javascript
复制
Usage: sync-download -n 'remote_files' -d localdir
>>> remote_files: files you wanna download, can be directories or filenames
>>> localdir: The only one directory you wanna transfer to.
>>>          Do not set more than one destdir, error will occur.
>>>      Please do note the 'remote_files' must be quoted otherwise you use absolute file path!!!
>>>
>>> examples:
              sync-download -n '~/test/*' -d ./test
         or
              sync-download -n /public/home/liuxs/test/* -d ./test

上传/下载文件

  • sync-upload - 上传文件(夹)
  • sync-download - 下载文件(夹)

运行命令或脚本

  • sync-commad - 后面直接接运行的远程主机命令,命令最好用引号括起来,以与本地主机命令或文件/路径区别

比如查看远程主机家目录,为展示区别,我看看本地主机家目录:

代码语言:javascript
复制
$ sync-command 'ls'
biodata
download
practice
readme.md
soft
tmp
workspace
zhuqi
$ ls
Applications Documents    Library      Music        Public
Desktop      Downloads    Movies       Pictures
  • sync-run 运行远程主机可执行文件

增加/删除以及切换主机

  • sync-hostadd 增加主机
  • sync-hostdel 删除主机
  • sync-switch 切换主机

PBS任务计算

  • sync-template 新建PBS任务模板
  • sync-deploy 部署PBS计算任务
  • sync-check 检查PBS任务状态
  • sync-qgen PBS脚本批量生成
  • sync-qsub 提交目录内的所有 PBS 脚本
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载
  • 准备与配置
  • 使用
    • 上传/下载文件
      • 运行命令或脚本
        • 增加/删除以及切换主机
          • PBS任务计算
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档