-bash: spawn: 未找到命令

这篇具有很好参考价值的文章主要介绍了-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
-bash: spawn: 未找到命令
以下尝试运行命令

[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/文章来源地址https://www.toymoban.com/news/detail-477539.html

到了这里,关于-bash: spawn: 未找到命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Linux错误] bash: jsp: 未找到命令...

    一、jps命令无法找到 二、检查基础Java环境 三、查看Java目录安装情况 ls命令: -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为\\\".\\\"的视为隐藏档,不会列出) -l除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英

    2024年02月05日
    浏览(47)
  • 解决Linux:-bash: mysql: 未找到命令 问题

    1、查看MySQL服务是否启动 2、查看MySQL运行环境 3、暂停MySQL服务 4、在/etc/profile配置系统环境变量 5、让profile文件立即生效 抄录于秀_儿 解决 Failed to search for file: cannot update repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist 因为Centos 8已经停止维护,所以需要改变镜

    2024年02月11日
    浏览(60)
  • linux系统中解决docker: bash:未找到命令

    目录 第一步、检查你的yum是否是最新版(不是的话就更新yum)  第二步、安装依赖软件包 第三步、设置yum源  第四步、安装docker  第五步、启动docker服务 第六步、设置开机自启动 第七步、给docker配置应用镜像下载加速(国外网站,下载应用镜像慢)  以下是卸载docker 删除

    2024年02月08日
    浏览(39)
  • Windows中的Git Bash运行conda命令:未找到命令的错误(已解决)

    在windows中的Gitbash中 打开激活conda环境,并运行(前提是你先安装好git(自己去官网下载))。 要能够在Gitbash上运行Conda, 如果你只是临时用一下,就是临时爽一把,那就按照下面的设置(如果你的Aanconda3安装在c盘,路径和下面的相同,如果不是安装在c盘,那就把c改成你安

    2024年04月29日
    浏览(55)
  • hadoop:编写jpsall脚本错误bash: 行 1: jps: 未找到命令

    jpsall脚本:集群使用jps命令查看集群运行情况 运行jpsall报错: 原因: jps命令可能不属于shell编程因此在ssh远程控制虚拟机时无法默认打开配置文件 解决:jps属于java命令在jdk的bin目录下,只需要在ssh hadoop102 后加上jps的绝对路径 即可,因为配置了环境变量因此我的路径是$J

    2024年02月04日
    浏览(95)
  • 服务内部错误: stderr: bash: docker-compose: 未找到命令

    报错描述 解决方法

    2024年02月10日
    浏览(48)
  • -bash: vim: 未找到命令 yum install -y 是什么意思_yum 命令讲解

    1.先查看是否已安装,命令:rpm -qa | grep vim 发现只装了部分包,缺少安装。 2.按需下载vim包比如 yum -y install vim-enhanced 差不多就下面这些包了 vim-common-7.4.629-8.el7_9.x86_64 vim-filesystem-7.4.629-8.el7_9.x86_64 vim-X11-7.4.629-8.el7_9.x86_64 vim-minimal-7.4.629-8.el7_9.x86_64 vim-enhanced-7.4.629-8.el7_9.x86_64  

    2024年02月02日
    浏览(40)
  • 初始化Hive元数据库 bash: schematool: 未找到命令的原因

    初始化元数据库:schematool -initSchema -dbType mysql -verbose 报错如下: 解决方法: (1)是否将MySQL的JDBC驱动拷贝到Hive的lib目录下: sudo cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib (2)是否在$HIVE_HOME/conf目录下新建hive-site.xml文件,文件的内容可以百度下 (3)Hive环境变量是否配置

    2024年02月13日
    浏览(36)
  • -bash: firewall: 未找到命令Error: INVALID_ZONE: =public解决方案

    软件安装过程中涉及到端口号,报错及问题排查总结如下: -bash:firewall:未找到命令 第一步:--add-port后未加“=”,通讯协议以及永久生效。继续测试。 第二步:仍报错未找到命令,firewall确认已安装有此命令。继续测试。 第三步:firewalld -cmd --zone =public --add-port=1551/tcp --per

    2024年02月04日
    浏览(48)
  • Linux上,执行git clone url , 显示“-bash: git: 未找到命令”,解决办法?

    解决办法:是安装git命令;但是在安装git命令之前,需要先启用EPEL存储库。 一.先启用EPEL存储库 如果没有安装 get(x32)或 wget (x64),需要提前安装下; 系统位数不同命令也会有所差异,下面将以CentOS 7 x32/x64 位为例: RHEL/CentOS 7 x32位执行以下命令: 执行命令: RHEL/CentOS 7

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包