-bash: spawn: 未找到命令

弯弯小道

需要使用脚本来执行当前服务器和其他服务器进行数据互传,脚本要能够自动应答,网上查到资料可以使用诸如下面的脚本来实现

#!/bin/expect -f  #which expect找到所在路径,添加到这里
spawn scp -P 8822 ./nmap-7.92-1.x86_64.rpm root@192.168.1.*:/mnt
expect {
        "(yes/no*)?" { send "yes\r";exp_continue }
        "*password:*" { send "ruijie1688\r" }
}

我使用的是centos7.5系统,首先在命令行试了expect命令,可以正常使用;命令行输入spawn提示“-bash: spawn: 未找到命令”,第一感觉就是没有这个命令,需要自己去装一个。我的服务器系统不能直接联网安装,那么就准备去网上下载spawn安装包进行安装,这个思路有点问题,走了不少弯路…
查了一些资料才发现spawn需要在expect环境下运行,环境中有了expect不需要再去安装spawn包

了解下expect是什么?

https://baike.baidu.com/item/expect/4598715
在这里插入图片描述
以下尝试运行命令

[root@885003ed-49c8-5470-afb8-8c74ecf0760c ~]# expect 
expect1.1> spawn                 #在expect环境下可以正常执行
usage: spawn [spawn-args] program [program-args]
    while executing
"spawn"
expect1.2> 

expect脚本执行方式

方式1:全路径执行

/root/scritpt.sh

方式2:赋予执行权限后执行

chmod +x scritpt.sh
./scritpt.sh

方式2:使用expect运行

expect scritpt.sh

expect中相关命令

spawn:
    启动新的进程
  send:
    用于向进程发送字符串
  expect:
    从进程接收字符串
  interact:
    执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了
  expect eof
   与spawn对应,表示捕捉终端输出信息终止,结束交互。  
  exp_continue
    匹配多个字符串在执行动作后加此命令

interact 与 expect eof的区别

expect中的相关命令在之前的脚本中已有体现,对照脚本就可以知道用法,interact 与 expect eof的区别,可尝试运行下面的脚本执行,执行后查看下当前系统的IP地址就知道区别了,看看停留在哪里

#!/bin/expect -f
spawn ssh -p 9622 root@192.168.1.88
expect "*password:*"
send "admin688\r"
interact

执行完以后停留在当前主机上

#!/bin/expect -f
spawn ssh -p 9622 root@192.168.1.88
expect "*password:*"
send "admin688\r"
expect eof

执行完返回原来的位置

上面的使用说明中如果有不好懂的地方,也可以参见下面的链接去学习 
https://blog.csdn.net/wangzhicheng987/article/details/122689236
https://blog.csdn.net/modi000/article/details/107115286/

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题:linux -bash: xx:未找到命令 回答:当你在Linux系统中使用命令时,如果出现"-bash: xx:未找到命令"的错误提示,通常意味着该命令在系统中没有找到或者没有正确安装。你可以尝试以下几个步骤来解决这个问题。 1. 检查命令是否正确:首先,请确保你输入的命令正确。可能是因为拼写错误或者误输入导致找不到命令。你可以通过在命令前加上"which"命令来检查命令是否存在于系统路径中。例如,输入"which xx"来检查"xx"命令是否存在。 2. 安装相关软件包:如果该命令确实存在于系统中,但仍然找不到,那可能是因为相关的软件包没有正确安装。你可以通过使用适合你所使用的Linux发行版的包管理器来安装命令所属的软件包。例如,在CentOS或RedHat系统上,你可以使用"yum install"命令来安装需要的软件包。 3. 检查命令路径:有时,你可能会将命令安装在非标准位置。你可以使用"whereis"命令来查找命令的路径。例如,输入"whereis xx"来查找"xx"命令的路径。如果路径不是你期望的,你可以将命令的路径添加到系统的环境变量中,或者将命令软链接到标准位置。 希望以上解答对你有帮助。 [2 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [-bash: spawn: 未找到命令](https://blog.csdn.net/wsuyixing/article/details/126541813)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [遇到问题--linux--Bash: mail: command not found(在CentOS,Redhat,Ubuntu和Debian中安装Mail邮件命令)](https://blog.csdn.net/q383965374/article/details/98629869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值