• 分享一个连接远端计算机与传输文件的脚本


    分享一个连接远端计算机与传输文件的脚本

    用了一个月超算,由于本地是linux系统,需要用到ssh命令连接远端计算机,需要用到scp命令进行文件传输。
    但是连接远端的命令太复杂,于是我写成了一个bash脚本,使用起来非常方便。

    用途

    将ssh和scp命令整合,可以连接特定的远端计算机,或者收发文件。
    该脚本共设置了三个选项
    -o--option 可以选择send,receive和connect三种模式,前两种将调用scp命令传输文件,后一种将使用ssh连接远端
    -l--local 后面加本地文件夹或者本地文件名。如果包含“?”等模糊匹配的字符需要加引号。在receive模式下必填该选项。
    -r--remote 后面加远端文件名或者远端文件夹。如果包含“?
    ”等模糊匹配的字符需要加引号。在send模式下必填该选项。

    示例

    在工作目录下提前准备好两个文件:一个文件是脚本bash文件“chaosuan.sh”,第二个是与远端计算机连接的密钥文件“id_key”

    # 脚本的使用方法(以下方式均可)
    bash chaosuan.sh -h 
    bash chaosuan.sh --help
    # 输出结果为
    # Usage: bash chaosuan.sh [-o|--option] [-r|--remote] [-l|--local]
    # option: connect (1|c) receive (2|r) send (3|s)
    
    # 连接远端计算机(以下方式均可,类似ssh命令)
    bash chaosuan.sh --option connect 
    bash chaosuan.sh -o c
    bash chaosuan.sh -o 1 
    
    # 发送本地文件到远端(以下方式均可,类似scp命令)
    bash chaosuan.sh --option send -l localfile_or_localdir -r remotefile_or_remotedir 
    bash chaosuan.sh -o s -l localfile -r remotefile 
    bash chaosuan.sh -o 3 -l localfile 
    
    # 接收远端文件到本地(以下方式均可,类似scp命令)
    bash chaosuan.sh --option receive  -r remotefile_or_remotedir -l localfile_or_localdir
    bash chaosuan.sh -o r  -r remotefile -l localfile 
    bash chaosuan.sh -o 2 -r remotefile 
    

    脚本

    脚本名称为“chaosuan.sh”:

    #!/bin/bash
    #time:  2022-10-8
    #email: xuranliang@hotmail.com
    #首先根据调试好的ssh命令修改web里的内容
    web=”ssh.cn-xxxxxxx.com“
    
    usage() {
        echo "Usage: bash ${0} [-o|--option] [-r|--remote] [-l|--local]"
        echo "option: connect (1|c) receive (2|r) send (3|s)" 1>&2
        exit 1
    }
    
    r=" "
    l=" "
    while [[ $# -gt 0 ]]; do 
        key=${1}
        case ${key} in 
            -o|--option)
                o=${2}
                shift 2
                ;;
            -r|--remote)
                r=${2}
                shift 2
                ;;
            -l|--local)
                l=${2}
                shift 2
                ;;
            *)
                usage 
                shift
                ;;
        esac
    done
    
    
    if [ ${o} == "c" ] || [ ${o} == "connect" ] || [ ${o} == "1" ]; then
      ssh -i id_key ${web}
    elif [ ${o} == "r" ] || [ ${o} == "receive" ] || [ ${o} == "2" ]; then
      scp -i id_key -r ${web}:/home/username/${r} ${l}
    elif [ ${o} == "s" ] || [ ${o} == "send" ] || [ ${o} == "3" ]; then
      scp -i id_key -r ${l} ${web}:/home/username/${r}
    else 
      usage
    fi
    

    __EOF__

  • 本文作者: Liang Xuran
  • 本文链接: https://www.cnblogs.com/liangxuran/p/16909080.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    JAVA学习(3)-全网最详细~
    一文深度解读边缘计算产业发展前景
    怎么压缩图片?图片压缩技巧快学来
    RocketMQ源码解析-topic创建机制
    程序员保密协议(合资合作)[范本]
    Android 腾讯位置服务地图简单使用
    FIX协议的基本概念
    5G WiFi 安信可 BW16 模组 RTL8720DN 入门笔记 2:Linux 搭建二次开发SDK开发环境,点亮一盏LED灯。
    Linux-基本指令03
    LeetCode844-比较含退格的字符串
  • 原文地址:https://www.cnblogs.com/liangxuran/p/16909080.html