expect 赋值shell变量_expect脚本中,变量的写法

本文介绍如何使用Expect脚本简化SSH远程登录过程中的密码输入,并展示了如何在Shell脚本中正确设置日期变量来实现文件传输任务。此外还讨论了变量在Expect脚本中的正确用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、expect相关命令

命令 作用

send 用于向进程发送字符串

expect 从进程接收字符串

spawn 启动新的进程

interact 允许用户交互

二、expect简单样例

#!/usr/tcl/bin/expect

set timeout 20

set host "10.10.10.100"

set username "root"

set password "123456"

spawn ssh $username@$host

expect "*password*" {send "$password\r"}

interact #执行完后保持交互状态,把控制权交给控制台,就可以手工操作了。

三、shell脚本和expect脚本的结合样例

shell脚本中定义时间变量的写法:

time=`date "+%Y%m%d"`

==》》

直接照搬到expect中,设置的变量是不生效的:

set time `date "+%Y%m%d"`

这样的写法是错误的,无法识别。

==》》

应该这样写:

set time [exec date +%Y%m%d]

才是正确的写法。

将expect加入到shell脚本后 set 定义的变量会失效;

解决办法 :将变量提到expect之外定义

#!/bin/bash

time=`date "+%Y%m%d"`

expect << EOF

cd /xxx

spawn scp user@ipaddr:/ /

set timeout 300

expect "assword:"

send "passwd\r"

expect "sftp>"

send "cd dir\r"

expect "sftp>"

send "get *admin*.$time*\r"

sleep 5

expect "sftp>"

sleep 5

#set timeout 300

EOF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值