精华内容
下载资源
问答
  • 工作日常中时常需要登录跳板机和服务器去部署程序、查询日志等,但每次登录服务器需要输入账号密码,且甚至有时还需要二次验证,过程比较麻烦,为了解决时间提高效率,故而采用expect脚本程序实现自动化的登录。...

    一、背景

    工作日常中时常需要登录跳板机和服务器去部署程序、查询日志等,但每次登录服务器需要输入账号密码,且甚至有时还需要二次验证,过程比较麻烦,为了解决时间提高效率,故而采用expect脚本程序实现自动化的登录。

    二、expect是什么?

    expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。简言之,expect就是一套用来实现自动交互功能的软件。

    在日常工作中,我们时常从终端中需手动输入执行命令、启动程序后,再进行一系列操作,而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行,可减少一部分手工操作执行环节。

    三、通过静态密码登录跳板机

    1.创建脚本login.sh

    #!/usr/bin/expect -f
    
    set ip 100.75.29.10
    set port 22
    set username rd
    set password rd1234
    spawn ssh -p $port $username@$ip
    expect {
            "*yes/no*" {
                  send "yes\n";
                  exp_continue;
             }
             "*password:" {
                    send "$password\r";
             }
    }
    interact

    2.运行脚本

    方式一:./login.sh

    jdbk@jdbkdeMacBook-Pro usr % ./login.sh
    spawn ssh -p 22 rd@100.73.29.10
    rd@100.73.29.10's password:
    Last login: Mon Oct 26 20:36:43 2020 from 100.66.172.62
    rd@yzdev-vm-centos7-029010:~$

    方式二:expect login.sh

    jdbk@jdbkdeMacBook-Pro usr % expect login.sh
    spawn ssh -p 22 rd@100.73.29.10
    rd@100.73.29.10's password:
    Last login: Mon Oct 26 20:51:46 2020 from 100.66.173.74
    rd@yzdev-vm-centos7-029010:~$

    注意:

    不能用sh login.sh来执行expect的程序,因为expect用的不是bash,否则会提示找不到命令的错误,如下:

    jdbk@jdbkdeMacBook-Pro usr % sh login.sh
    login.sh: line 8: spawn: command not found
    couldn't read file "{": no such file or directory
    login.sh: line 10: *yes/no*: No such file or directory
    login.sh: line 11: send: command not found
    login.sh: line 12: exp_continue: command not found
    login.sh: line 13: syntax error near unexpected token `}'
    login.sh: line 13: `    }'
    jdbk@jdbkdeMacBook-Pro usr %

    四、通过密钥文件登录跳板机

    1.创建脚本k8s.sh

    #!/usr/bin/expect -f
    
    set ip 100.75.20.4
    set port 22
    set username root
    spawn ssh -i 密钥路径 $username@$ip -p $port
    expect {
        "*yes/no*" {
            send "yes\n";
        }
    }
    interact

    2.运行脚本

    同login.sh脚本一样,不可使用sh k8s.sh的方式,此处不再赘述。

     

    五、通过动态密码登录跳板机

    1.创建脚本k8s.sh

    #!/usr/bin/expect
       
    set username 个人账号--机器ID
    set server blj.jdb-dev.com
    set port 22
    set password 个人密码
    set six_code [lindex $argv 0]
    spawn ssh -p $port $username@$server
    expect {
        "*yes/no*" {
            send "yes\n";
            exp_continue;
        }
        "*password:" {
            send "$password$six_code\n";
        }
    }
    interact

    2.运行脚本

    同login.sh脚本一样,不可使用sh blj.sh的方式。

    方式一:./blj.sh  OTP动态密码

    jdbk@jdbkdeMacBook-Pro usr % ./blj.sh 456327
    

    方式二:expect blj.sh  OTP动态密码

    jdbk@jdbkdeMacBook-Pro usr % expect blj.sh 637182
    

     

    展开全文
  • 本文来自NAT123官网,原文链接 因为博主的内网转发服务的物理服务器为树莓派并挂在家里,担心断电导致树莓派重启,NAT123无法正常使用,特此记录。...一、写自动登录脚本expect 需要安装expect库

    本文来自NAT123官网,原文链接

    因为博主的内网转发服务的物理服务器为树莓派并挂在家里,担心断电导致树莓派重启后,NAT123无法正常使用,特此记录。

    除了用特定的命令登录实现开机自动启动,同样可以使用脚本方式实现。

    自启动的命令分成三层,local.rc执行,autostart脚本检测,expect脚本负责自动登录


    一、写自动登录脚本expect

    需要安装expect库
    sudo apt-get install expect

    新建脚本expect
    sudo nano /mnt/expect.sh

    写入以下内容
    #!/bin/bash

    username="填你的用户名"
    mypwd="填你的密码"
    cmdnat123="sudo mono /mnt/nat123linux.sh"

    expect -c"
    spawn $cmdnat123
    while { 1 } {
    expect {
    \"press any key to Continue\" {
    send \"\r\";
    }
    \"enter your nat123 username\" {
    send \"$username\r\";
    }
    \"enter your nat123 password\" {
    send \"$mypwd\r\";
    }
    send \"$mypwd\r\";
    }
    eof {
    send \"exit\r\";
    }
    }
    sleep 5;
    }
    "
    echo "Exit ..."
    sleep 5

    二、写检测脚本autostart
    新建脚本文件autostart
    sudo nano /mnt/autostart.sh

    写入以下内容

    #!/bin/bash

    while true

    do
    ps aux | grep nat123 | grep -v grep
    if [ $? -eq 0 ];then
    sleep 600
    else
    sudo screen -S nat123 bash /mnt/expect.sh
    fi
    done

    三、写入开机启动项
    编辑rc.local文件
    sudo nano /etc/rc.local


    在文件中间加入以下命令
    sudo bash /mnt/autostart.sh
    exit 0

    从此再也不怕掉线停电断线重启了-_-

    展开全文
  • Bash脚本从用户那里获取变量,然后调用terraform脚本以在C2服务器之前使用mod_rewrite自动启动apache2。 现在,此仓库支持在Linode或Digital Ocean中站起来的重定向器,并且我有不同的脚本来站起HTTP重定向器和...
  • 使用说明: 1、为提高生产环境升级效率及准确性,特编写此shell脚本。功能分别是以下九项: ...并且会自动调用expect脚本远程登录其他服务器执行相应操作。 在原基础上,增加了执行人姓名输入的步骤,并在之后...

    脚本见如下链接:
    第一部分
    https://blog.csdn.net/weixin_43186465/article/details/88424229
    第二部分
    https://blog.csdn.net/weixin_43186465/article/details/88424439
    第三部分
    https://blog.csdn.net/weixin_43186465/article/details/88424594

    使用说明:
    1、为提高工作效率及系统升级的准确性,特编写此shell脚本。功能分别是以下九项:【1】备份原码、【2】导入新码、【3】清理缓存、【4】清理日志、【5】启动服务、【6】停止服务、【7】系统负载、【8】一键模式、【9】退出程序。
    2、执行后,会根据执行者的输入,分别运行相应功能。并且会自动调用expect脚本远程登录其他服务器执行相应操作。增加了执行人姓名输入的步骤,并在之后的备份中以变量的形式作为备份文件名,增加了判断机制,每一步命令的执行,都需符合预期的判断为真,才可执行。
    3、对脚本中涉及的明文密码使用Linux的xxd命令机制进行了加密,不会直观的泄露加密的内容。
    4、脚本中用到的shell知识点:操作文件目录,输入输出重定向和管道,进程,文本处理和字符串操作,变量,流程控制,expect自动交互,函数的定义和调用,逻辑判断,文本处理。
    5、增加程序锁机制,在脚本执行过程中,不允许多人执行。
    6、增加了密码验证机制,当用户输入正确的密码程序才可继续执行。
    7、使用trap命令捕获用户CTRL+C终止执行的操作,并提示信息。
    8、密码输入隐式显示*号,既保证安全又有好的交互性。
    9、增加日志功能,记录程序运行状态及过程。

    执行后界面如下:
    在这里插入图片描述
    脚本见如下链接:
    第一部分
    https://blog.csdn.net/weixin_43186465/article/details/88424229
    第二部分
    https://blog.csdn.net/weixin_43186465/article/details/88424439
    第三部分
    https://blog.csdn.net/weixin_43186465/article/details/88424594

    展开全文
  • 使其自动化,以便在完成游戏,只需关闭服务器即可。 设置服务器 我们将从遵循Parsec AWS指南开始。 如果还没有,请创建一个并下载 如果尚未创建一个 ,请创建一个。 (可选)创建一个。 下载适用或Microsoft...
  • 如何实现服务器的批量自动发布

    千次阅读 2015-05-29 17:12:37
    整个流程经常因为数据库脚本有误、操作员不熟悉操作规范、 安全策略要求使用堡垒机逐个登录服务器操作等原因而导致发布过程漫长,我们需要开发实现一个自动发布的工具,当进行版本发布时,先将war包、数据库脚 ...

    目前我们每次版本发布时大致流程为:停所有服务器→传war包→刷数据库脚本→启动所有服务器。整个流程经常因为数据库脚本有误、操作员不熟悉操作规范、 安全策略要求使用堡垒机逐个登录各服务器操作等原因而导致发布过程漫长,我们需要开发实现一个自动发布的工具,当进行版本发布时,先将war包、数据库脚 本等上传至服务器指定目录后,操作员可以通过浏览器访问一个页面,输入后续操作需要的用户名密码(如刷数据库脚本时需要的数据库用户名密码)、然后通过傻瓜式的发布向导指引操作员"是否停止服务器"、点击下一步按钮"是否开始上传war包"、再点击下一步按钮"是否开始刷数据库脚本"等。每一步都实现程序自动控制,并且每一步操作都有提示结果返回,以便在操作员发现自动程序出错时改为手动执行,直到整个发布过程结束。

     

    总体设计方案:

    1、 整个软件架构为:一个部署在某台服务器上的HTTP Server作为总控的客户端,在生产环境各应用服务器上各部署一个简化的HTTP Server作为服务器端。客户端作为Web服务器向操作员提供web操作界面,并接收操作员指令向各服务器端发送命令请求,服务器端执行命令后返回结果,在客户端将其显示以便操作员掌握指令执行情况。

    2、 客户端为JSP+Java Bean架构,JDK版本1.5,须运行在J2EE容器之上,可通过部署一个Tomcat或者在应用中内嵌Jetty实现。

    3、 服务器端执行客户端的指令请求是通过Java调用本地Shell脚本实现的,并接收脚本执行的输出内容返回客户端。

    4、该次版本实现各服务器仅实现停止、启动和重启Weblogic各节点的指令;向数据库刷脚本的操作是由客户端通过调用本地的Oracle客户端实现。

     

    页面设计方案:

    1、 首页为登录页,有一个密码输入框需要输入密码并点击确认按钮进行登录后才能进行后续操作。2、 成功登录后进入一个框架页面,左侧为解析XML配置文件得到的步骤菜单树,右侧为步骤执行的操作界面和执行结果返回的信息显示界面。

    3、 左侧菜单树中已经执行过的步骤用特殊图标或打勾符号表示,并提供“清除已完成步骤提示”的按钮。

    4、 右侧页面提供<上一步>、<确认执行>、<下一步>按钮,分别表示返回上一步骤、确认执行当前步骤、跳转到下一步骤页面。

    5、 点击确认执行按钮执行命令后,该步骤状态即为完成,但由于执行结果返回信息包括各种情况,程序无法逐一确认是否正确执行,须操作人员根据执行命令的返回结果信息自行判断,如果成功执行,操作员可点击<下一步>按钮进入下一步骤。

    6、 第一步页面上隐藏<上一步>按钮,所有步骤执行完毕后,隐藏<下一步>按钮。

    7、 操作员可通过上一步、下一步按钮到准备操作的步骤页面,也可以通过点击左侧菜单树上的链接跳转到相应页面。

    逻辑控制处理主要依赖于配置文件控制:

    <?xml version="1.0" encoding="UTF-8"?>
    <commander>
     <!-- 登录客户端操作的密码,经过MD5加密 -->
     <client password="6B4B7EDEC50234CBD1AA5FD719A9229C" />
     <!-- 服务器IP端口,备注用于显示在页面 -->
     <servers>
     <server ip="10.xxx.xx.xx" port="8888" remark="主应用服务器10.xxx.xx.xx"/>
     <server ip="10.xxx.xx.xx" port="8888" remark="报表服务器10.xxx.xx.xx"/>
     <server ip="10.xxx.xx.xx" port="8888" remark="批处理服务器10.xxx.xx.xx"/>
     </servers>
     <!-- 所有操作步骤配置 -->
     <commands-step>
     <!--
     type:表示是远程HTTP连接服务器还是调用本地Shell执行
     title:用于显示在步骤菜单和步骤标题上的文字信息
     script-path:为shell脚本存放路径,当type为远程http时,script-path的值将拼接在URL之后
     page:用于步骤菜单上点击时跳转到的页
     remark: 该步骤页面上显示的对这一步骤的详细说
     param:仅type为local-shell时生效,为须传给shell脚本的参数,以'$变量名'方式表示
     log-file:仅在type为local-shell时生效,为本地shell脚本执行后生成的日志文件路径
     -->
     <commands step="1" type="remote-http" title="停止所有服务器" script-path="/stopall" page="/step/remotecmd.jsp?step=1"
      remark="停止所有应用服务器上WebLogic实例" />
      <commands step="2" type="local-shell" title="刷数据库脚本" page="javascript:void(0);">
       <command-step step="2.1" title="脚本导入主库" page="/step/dbuserpasswd.jsp?step=2.1" remark="">
        <command step="2.1.1" title="初始化脚本" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.1"
        param="$username $password /xxx/deployscript/XXX/preload.sql" log-file="" remark=""/>
        <command step="2.1.2" title="备份存储过程和函数" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.2"
         param="$username $password /xxx/deployscript/XXX/backup.sql" log-file="" remark=""/>
        <command step="2.1.3" title="DDL语句" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.3"
        param="$username $password /xxx/deployscript/XXX/DBupdate.sql" log-file="" remark=""/>
        <command step="2.1.4" title="刷存储过程" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.4"
        param="$username $password /xxx/deployscript/XXX/SP_FUNupdate.sql" log-file="" remark=""/>
        <command step="2.1.5" title="编译存储过程" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.5"
        param="$username $password /xxx/deployscript/XXX/SP_Compile.sql" log-file="" remark=""/>
        <command step="2.1.6" title="DML语句" script-path="~/execsql.sh" page="/step/localcmd.jsp?step=2.1.6"
        param="$username $password /xxx/deployscript/XXX/DBupdate.sql" log-file="" remark=""/>
       </command-step>
       <command-step step="2.2" title="脚本导入报表库" page="/step/dbuserpasswd.jsp?step=2.2" remark="">
       </command-step>
       <command-step step="2.3" title="脚本导入日志库" page="/step/dbuserpasswd.jsp?step=2.3" remark="">
       </command-step>
      </commands>
      <commands step="3" type="remote-http" title="启动所有服务器" script-path="/startall" page="/step/remotecmd.jsp?step=3"
      remark="启动所有应用服务器上WebLogic实例" />
      </commands-step>
     </commander>

     

    感兴趣的朋友,欢迎一起讨论

    展开全文
  • shell脚本远程ssh服务器并执行操作

    千次阅读 2020-03-30 20:58:29
    需求:自动登录服务器并执行操作指令 使用到的命令:expect expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预。 send 命令接收一个字符串参数,并将该参数发送到进程。 expect 命令和send命令...
  • 相信大家都碰到服务器重启,自己部署的相关应用没有启动,比如tomcat,于是就只能自己远程登录服务器去手动执行启动脚本,烦!linux服务器只要简单几步就能使你的应用开机自启,本文假设你使用root登录服务器: ...
  • 我们公司服务器上设置了一个小音响,以前有管理员用了酷狗音乐设置闹钟。(有时候突然小苹果真的很闹心) 问题当然不是小苹果,而是服务器电脑每次...3.开机自动启动,不管是否登录。 于是乎上网搜索了一个VBS脚本 dim
  • 自动填写表单内容,可以从文件读取内容并自动填写到网页,支持验证码自动填写,填写完毕后自动提交。适合批量提交网页。定时提交可实现在无人值守时自动填表并提交网页。完全模拟手工操作,展示实时页面及整个提交...
  • 触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成jenkins服务器上再执行SSH命令登录到部署服务器,docker从仓库(私服)拉取...
  • 迷你版SQL2000服务器

    2015-01-23 17:32:37
    如果需要让程序自动开启服务,请勾选自动开启,开机启动表示随OS启动。 与您的软件一起分发的方法: 1、运行本程序; 2、勾选 自动开启、开机启动和服务守护; 3、将本软件及附属文件一起打包进您的安装程序中...
  • 安装完成,运行以下命令来启动MySQL服务并使它在启动自动启动: sudo systemctl enable --now mysqld 要检查MySQL服务器是否正在运行,请输入: sudo systemctl status mysqld 添加密码及安全设置# 运行...
  • 今天朋友找我写个监控网卡状态的脚本,要求在系统网卡挂了可以自己启动起来,这个要求是不是很bt,我考虑了半天,简单的写了个shell脚本来监控,实现原理是使用ping来测试网络连通性,如果不通就重启网卡,当然我这个脚本还...
  • 单点登录源码

    2018-01-09 20:56:08
    单点登录, SSM框架公共模块 ├── zheng-admin -- 后台管理模板 ├── zheng-ui -- 前台thymeleaf模板[端口:1000] ├── zheng-config -- 配置中心[端口:1001] ├── zheng-upms -- 用户权限管理系统 | ├── ...
  • 自动登录 准点预售和捡漏 智能候补 邮件通知 server酱通知 依赖库 验证码目前可以本地识别,需要下载模型,放于项目根目录,全部代码来源于此项目 传送门,表示感谢 PS: 1. 模型下载链接:...
  • 修改配置文件,进去添加以下两项:保存退出后启动mysql服务登录mysql进行同步连接连接设置开启同步查看是否双yes编写自动脚本进行邮件报警和任务定时 数据库分库分表备份+任务定时计划) 两台服务器都要操作 关闭防
  • 修改配置文件,进去添加以下两项:保存退出后启动mysql服务登录mysql进行同步连接连接设置开启同步查看是否双yes编写自动脚本进行邮件报警和任务定时 数据库分库分表备份+任务定时计划) 两台服务器都要操作 关闭防
  • 触发jenkins自动pull代码,通过maven编译、打包,然后通过执行shell脚本使docker构建镜像并push到私服(或者阿里云)仓库,此操作完成jenkins服务器上再执行SSH命令登录到部署服务器,docker从仓库(私服)拉取...
  • 4-源码

    2021-03-07 13:07:27
    我们通过部署了我们的应用程序,并利用在通过我们的单元测试后自动进行了部署,这将在稍后进行解释。 推荐的本地版本 如果您想省力,可以使用外壳程序脚本“ build.sh”(位于此存储库的主文件夹中)通过IDE或CLI...
  • 服务器配置“Auto Client Reconnect”(自动客户端重新连接)设置 95 配置 ICA“保持活动状态” 95 为场配置 ICA“保持活动状态”设置 95 为服务器配置 ICA“保持活动状态”设置 96 了解会话基础知识 96 管理和...
  • 1215 网吧维护\资料\PNP无盘工作站启动后不能提示找到新硬件的解决.TXT 1716 网吧维护\资料\PNP无盘的快速安装方法.TXT 5723 网吧维护\资料\RAID简介.TXT 583 网吧维护\资料\REALONE 解码器.TXT 9734 网吧维护\资料\...
  • ABFrameWork Help.chm

    2020-01-10 16:44:00
    v功能模块脚本权限(模块的哪些脚本可以使用,脚本中可灵活设置界面控件的是否显示等属性),如张三、李四登录后能看到客户管理模块,但张三看到的是执行过某个脚本后的窗体,而李四看到的是没执行过脚本的窗体 ...
  • CuteFTP9简易汉化版

    2014-04-11 12:31:30
    除了上面这些,一种上传软件可以锁定一个本地文件夹到活动远程窗格中,索引配置文件夹(目录)选项,配置缓存文件夹,自动刷新文件夹转移和导航事件,设置公差服务器设置问题,递归删除整个文件夹,删除到回收站,等等。...
  • 为了激活/暂停/重新启动/取消,所以你可以轻松设置定制产品,并中断工作流程,你需要一个自定义的事件钩子脚本可以被执行计费自动开票,让您的客户轻松地计费。您可以添加/编辑/删除任何产品和价格,任何发票。您...
  • 9.7.3 撤销服务器登录的访问权限和授予的角色 257 9.8 控制数据库访问和管理 258 9.8.1 为登录分配访问权限和角色 258 9.8.2 为多个登录分配角色 259 9.8.3 创建标准的数据库角色 260 9.8.4 创建应用程序...
  • 运行 ant-forest-launcher.js 启动项目 运行 ant-forest-settings.js 进行项目配置 * 项目目录中也可直接点击上方的 "运行项目" 按钮 欢迎使用并反馈 使用指南 快速手册 (视频) 项目文档 (文字) 系统需求 ...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

服务器启动后自动登录脚本