shell连接远程服务器脚本

脚本示例

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/expect
set timeout 10
set password ***
spawn ssh root@{IP} -p 22
expect {
"password:" {
send "${password}\r";
exp_continue;
}
}
interact
  • 第1行:#!/usr/bin/expect 是告诉系统在执行这个脚本的时候用哪个命令来执行,这边是用expect,是一个类似bash和sh的shell。
  • 第2行 set timeout 10 设置超时时间为10s。
  • 第3行 set password 123456 定义了一个变量 password,这个变量记录了登陆远程服务器的密码。
  • 第4行 spawn ssh ubuntu@xxx.xxx.xxx.xxx 调用 spawn 命令来执行一个系统命令。spawn是expect shell的内建命令,只有在expect环境下才可以使用。这行代码的功能就是通过ssh连接远程ECS。
  • 5~10行 行用了一个 expect 命令,可以将这个命令理解为期待shell中输出结果中包含什么关键字。
    如果包含的是 password: 则表示不是第一次连接这个远程服务器,直接用send输出密码即可。

传送文件

  • 将本地文件复制到远程: scp {local txt} {userName}@{ip}:/{txt}
  • 将远程文件复制到本地: scp {usreName}@{ip}:/root/{txt}