一、制作SSH登录远程服务器的Shell脚本
Ubuntu环境需要安装expect安装包
sudo apt-get install expect
- 1
使用shell脚本自动ssh登录远程服务器
login.sh
#!/usr/bin/expect -f
# 设置ssh连接的用户名
set user liuben
# 设置ssh连接的host地址
set host 10.211.55.4
# 设置ssh连接的port端口号
set port 9999
# 设置ssh连接的登录密码
set password admin
# 设置ssh连接的超时时间
set timeout -1
spawn ssh $user@$host -p $port
expect "*password:"
# 提交密码
send "$password\r"
# 控制权移交
interact
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
# 确定login.sh脚本有可执行权限
chmod +x login.sh
# 执行login.sh脚本
./login.sh
# 注意
不能按照习惯来用sh login.sh来这行expect的程序,会提示找不到命令,如下:
login.sh: line 3: spawn: command not found
couldn't read file "*password:": no such file or directory
login.sh: line 5: send: command not found
login.sh: line 6: interact: command not found
因为expect用的不是bash所以会报错。因为bash和expect的脚本指定了不同的脚本解释器
#!/usr/bin/expect -f
#!/bin/bash
执行的时候直接./login.sh就可以了。~切记!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
参考文章:
-
- #!/usr/bin/expect -f
- # 设置ssh连接的用户名
- set user root
- # 设置ssh连接的host地址
- set host 199.169.0.62
- # 设置ssh连接的port端口号
- set port 22
- # 设置ssh连接的登录密码
- set password cloud
- # 设置ssh连接的超时时间
- set timeout -1
- spawn ssh $user@$host -p $port
- expect "*password:"
- # 提交密码
- send "$password\r"
- sleep 3
- send "cd /home/ubuntu\r"
- send "ls\r"
- send "./test.sh\r"
- send "exit 1\r"
- # 控制权移交
- interact
二、注释的用法
Shell脚本的注释
Shell脚本单行注释用#,这个我想大家应该都知道。如果要把一段代码全部注释掉,可以用如下方法
#!bin/bash
echo "我不是单行注释"
# echo "我是单行注释,你看不到我"
echo "我不是多行注释"
:<<COMMENT
echo "我是多行注释1,你看不到我"
echo "我是多行注释2,你看不到我"
COMMENT
echo "我没有看到多行注释1和多行注释2"
# 其实COMMENT可以随意命名,只要别跟中间的注释内容相同即可。当Shell脚本执行遇到:<<COMMENT,就不执行脚本了,一直到再碰到COMMENT后才重新开始执行脚本。如果忘记写COMMENT或者写错(由于已经不执行脚本了,所以即使写错也不会报错),则:<<COMMENT之后的脚步将都不会执行。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
参考文章:
Shell脚本的文件注释模板
#!bin/bash
# ----------------------------------------------------------------------
# name: login.sh
# version: 1.0
# createTime: 2016-06-22
# description: shell脚本的功能描述
# author: birdben
# email: 191654006@163.com
# github: https://github.com/birdben
# ----------------------------------------------------------------------
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
这里推荐一个比较好的Shell代码规范