mac 上通过shell脚本 ssh上服务器

一、安装expect

brew install expect

报错:

Error: No such file or directory @ rb_sysopen

brew install rb_sysopen

安装完报错的依赖,再重新运行brew install命令安装就不再报错

二、使用shell脚本

#! /usr/bin/expect -f
 
set timeout 30
set userName root
set host 192.168.0.0
set passwd 0000000
 
spawn ssh $userName@$host
 
expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "$passwd\n"
    }
    "password:" {
        send "$passwd\n"
    }
}


interact

添加脚本可执行权限

sudo chmod +x login.sh

执行脚本:

./login.sh

报错记录:

报错:spawn: command not found

需要把#!/usr/bin/expect -f   要写在第一行

或者和启动方式有关系

shell运行的5种方式

第一种使用绝对路径执行

第二种使用相对路径执行,如./的方式

第三种使用 sh命令来执行 格式 sh 脚本名 不需要执行权限 -x参数(显示执行过程)

第四种使用 . (空格)脚本名称的方式执行 不需要执行权限 . a.sh

第五种使用 source 脚本名称 不需要执行权限(主要用于生效配置文件)

这里推荐使用第二种方式 

你可能感兴趣的:(linux,macos,ssh,linux)