尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Except 脚本免密登录(带参数调用except脚本)

Except 脚本免密登录(带参数调用except脚本)
📅 发布时间:2026/6/18 13:55:51

Except 脚本免密登录(带参数调用except脚本)

脚本名称:expect user_login.exp

脚本内容:

#!/usr/bin/expect
set ip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set command [lindex $argv 3]
set timeout 120

if { $argc != 4 } {
    puts "Usage: $argv0 <ip> <username> <password> <command>"
    exit 1
}

log_user 0

spawn ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q -t ${username}@${ip} "${command}"

expect {
    "Are you sure you want to continue connecting (yes/no)?" {
        send "yes\r"
        exp_continue
    }
    "*assword:*" {
        send "${password}\r"
        exp_continue
    }
    eof 
}
set result [string trim $expect_out(buffer)]
puts ${result}

 

说明:

set xxxx [lindex $argv 0]: 获取调用脚本时传入进来的参数;

set timeout 120: 设置Exccept脚本执行超时时间;

ssh -o StrictHostKeyChecking=no: 禁用 SSH 的 “严格主机密钥检查”;

ssh -o UserKnownHostsFile=/dev/null: 指定 SSH 保存 / 读取主机密钥的文件路径为 /dev/null(空设备文件);

set result [string trim $expect_out(buffer)]: 设置一个变量接收结果集

在 expect 脚本中,set result [string trim $expect_out(buffer)] 是一条用于处理捕获到的交互数据的命令,主要作用是去除数据中的多余空白字符(如空格、换行、制表符等),得到更整洁的有效内容:

各部分含义
$expect_out(buffer)
expect_out 是 expect 内置的全局数组,用于存储 expect 命令匹配过程中捕获到的所有数据。
$expect_out(buffer) 是该数组的一个关键元素,存储从上一次 expect 命令结束到本次 expect 命令匹配成功之间的所有输出数据(包括换行、空格、提示符等冗余信息)。
例如:用 expect "$" 匹配远程主机的命令提示符时,$expect_out(buffer) 会包含命令执行结果、换行符以及最终的 $ 提示符。
string trim
这是 Tcl 语言(expect 基于 Tcl 语法)的内置命令,用于去除字符串首尾两端的空白字符(默认包括:空格 、制表符 \t、换行符 \n、回车符 \r 等)。
语法:string trim 字符串,返回处理后的字符串(中间的空白字符会保留)。
set result ...
set 是 Tcl 的变量赋值命令,将处理后的字符串保存到变量 result 中,方便后续使用(如打印、判断、传递给其他命令等)。

实际作用:清理冗余数据
$expect_out(buffer) 捕获的数据通常包含大量无关空白字符(如命令执行后的换行、提示符前的空格等),string trim 会去除这些冗余内容,只保留核心有效数据。
puts ${result}: 打印结果集

 

脚本调用方式如下:

function retry_root_is_alive(){
    command_t="awk 'BEGIN{print 1+1}'"
    result=$(expect user_login.exp "${HOST_IP}" "${HOST_USERNAME}" "${HOST_PASSWORD}" "${command_t}")
    echo "${result}"
}

command_t="awk 'BEGIN{print 1+1}'":服务器探活,看结果集是否返回2

$(expect user_login.exp "${HOST_IP}" "${HOST_USERNAME}" "${HOST_PASSWORD}" "${command_t}"):

传入四个参数,这里可根据实际情况进行调整,相对应调整expect user_login.exp中的参数设定

 

相关新闻

  • spatial语法与scala语法关系速览
  • 2025年10月通风气楼厂家权威推荐:专业通风解决方案优选榜单
  • Navicat Premium 16 破解版下载及安装使用详细教程

最新新闻

  • 从CVE-2026-24763看沙箱逃逸:环境变量注入如何攻破AI智能体安全防线
  • 【人员】人员批量处理与外部数据导入
  • 5分钟快速上手OpenVSP:NASA开源飞机设计软件的完整教程
  • 从人脸识别到AR面具:技术实现与创意应用全解析
  • MPC801外部信号全景解析:从引脚到系统交互
  • 2026 年 6 月上海婚姻律师榜 专业靠谱婚家纠纷处理律师执业全梳理 - 外贸老黄

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号