# 第二章

# 免密ssh/scp

  • 客户机A,远程服务器B
  • 在A执行命令:ssh-keygen -t rsa
  • 将A生成的文件目录中的id_rsa.pub复制到B:scp .ssh/id_rsa.pub root@ip:/root/.ssh/authorized_keys
  • A执行:ssh-add id_rsa
  • 到此ssh、scp免密操作

# ssh

  • 登陆B:ssh root@ip

# scp

  • 上传文件:scp A文件 root@ip:B目录/文件
  • 上传文件夹:scp -r A文件 root@ip:B目录
  • 下载文件:scp root@ip:B文件 A目录/文件
  • 下载文件夹:scp -r root@ip:B文件 A目录/文件

# 自启动脚本

# 单jar

  • #!/bin/bash
    # 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;
    
    APP_NAME=lu-manage.jar
    APP_LOG_NAME=xxx.log
    
    #使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh $APP_NAME.sh [start|stop|restart|status]"
        exit 1
    }
    #检查程序是否在运行
    is_exist() {
        pid=$(ps -aux | grep $APP_NAME | grep -v grep | grep -v deploy | awk '{print $2}')
        #如果不存在返回1,存在返回0
        if [ -z "$pid" ]; then
            return 1
        else
            return 0
        fi
    }
    #启动方法
    start() {
        is_exist
        if [ $? -eq 0 ]; then
            echo "$APP_NAME is already running. pid=$pid"
        else
            nohup java -jar $APP_NAME >> $APP_LOG_NAME 2>&1 &
        fi
    }
    #停止方法
    stop() {
        echo "开始关闭java应用"
        is_exist
        if [ $? -eq "0" ]; then
            kill -9 $pid
        else
            echo "$APP_NAME is not running"
        fi
    }
    #输出运行状态
    status() {
        is_exist
        if [ $? -eq "0" ]; then
            echo "$APP_NAME is running. Pid is $pid"
        else
            echo "$APP_NAME is NOT running."
        fi
    }
    #重启
    restart() {
        stop
        sleep 5
        start
    }
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "status")
        status
        ;;
    "restart")
        restart
        ;;
    *)
        usage
        ;;
    esac
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73

# 多jar本地

  • #!/bin/bash
    # 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;
    
    USERNAME=zhanglu
    PROJECT_PATH=/Users/zhanglu/Desktop/lu/workspace/南京数脉动力信息技术有限公司/work_space/电信5楼项目组/5G消息/lu_work_space/RCS
    MVN=/Users/zhanglu/Library/Application\ Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/202.7660.26/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn
    
    stop(){
        pids=$(ps -au$USERNAME | grep $1 | grep -v grep | grep -v deploy | awk '{print $2}')	
        for pid in ${pids[@]}
        do
            echo killed pid $pid
            kill -9 $pid
        done
    }
    
    start(){
        jars=$(find $1 -name $2)
        echo jars
        cd $1	
        for jar in ${jars[@]}
        do
            if [[ $jar == *rcs-server* ]]
            then
                nohup java -jar $jar &
                echo start jar $jar
                sleep 8
            elif [[ $jar == *rcs-config* ]]
            then
                nohup java -jar $jar &
                echo start jar $jar
                sleep 20
            fi
        done
        for jar in ${jars[@]}
        do
            if [[ $jar != *rcs-server* && $jar != *rcs-config* ]]
            then
                nohup java -jar $jar &
                echo start jar $jar
            fi
            sleep 6
        done
    }
    
    restart(){
            read -p "请输入关闭rcs-jar进程匹配规则:" rule
        stop $rule
        sleep 5
        read -p "请输入启动rcs-jar文件夹路径:" dir
        read -p "请输入启动rcs-jar文件匹配规则:" jarPath
        start $dir $jarPath
    }
    
    status(){
        jars=$(find $1 -name $2)
        for jar in ${jars[@]}
        do
            pid=$(ps -au$USERNAME | grep $jar | grep -v grep | grep -v deploy | awk '{print $2}')	
            if [[ $pid == '' ]]
            then
                 echo '未启动:' $jar
            else
                echo '已启动-['$pid']:' $jar
            fi
        done
    }
    
    #maven打包
    package(){
        cd $PROJECT_PATH
        /Users/zhanglu/Library/Application\ Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/202.7660.26/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn clean package -Dmaven.test.skip=true
    }
    
    #上传至服务器路径
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
        start $2 $3 #目录 匹配文件
        ;;
    "stop")
        stop $2
        ;;
    "status")
        status $2 $3 #目录 匹配文件
        ;;
    "restart")
        restart
        ;;
    "package")
            package
            ;;
    *)
    esac
    
    #ps -auzhanglu | grep '.*rcs.*.jar' | grep -v grep | grep -v deploy | awk '{print $2}'	#'com.jshb.*$'
    #find /Users/zhanglu/Desktop/lu/workspace/南京数脉动力信息技术有限公司/work_space/电信5楼项目组/5G消息/lu_work_space/RCS -name 'rcs-*.jar'
    
    #sh shell.sh stop .*rcs.*.jar
    #sh shell.sh start /Users/zhanglu/Desktop/test rcs-*.jar
    #sh shell.sh restart
    #sh shell.sh status /Users/zhanglu/Desktop/test rcs-*.jar
    #sh shell.sh package
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
  • 3.0 分模块多jar,远程服务器

    
    
    1
  • 4.0

# nc

  • server:
    	nc -l 8888 
    	nc -lk 8888
    client:nc 127.0.0.1 8888
    
    1
    2
    3
    4
更新时间: 9/21/2023, 7:24:27 PM