expect实用示例

电脑知识 投稿 37000 0 评论

expect实用示例

1. 自动登录开发环境服务器


#!/usr/bin/expect

set timeout 30
#获取输入的第一个参数,赋值给变量docker_which
set docker_which [lindex $argv 0]
#如果docker_which无值,则默认值设置为0
if {"$docker_which"==""} {
	set docker_which 0
}
#登录149
spawn sudo ssh -p 8044 yhm@123.56.71.70
expect "*password*"
send "feishuai.vip\r"
expect "*login:*"
#切换账号
send "su b\r"
expect "*密码*"
send "b\r"
#进入docker
send "ssh docker\r"
expect "login:"
#进入docker c环境
send ". gotoc $docker_which\r"
expect "*root@*"
#进入数据库环境
send "db\r"
expect "*mysql>*"
send "show databases;\r"
expect "*rows in set*"
send "use phparticle_db;\r"
interact

2. 查看日志


#!/usr/bin/expect

set timeout 30
set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]
set env_which [lindex $argv 0]
set file_dir /data/t/xnw/laravel/storage/logs/
if {"$env_which"==""} {
	set env_which local
}
set file [lindex $argv 1]
if {"$file"==""} {
	#set file "$file_dir"laravel-$date.log
	set file /data/t/xnw/laravel/storage/logs/laravel-$date.log
}
switch -- $env_which {
	local {
		spawn gotoc
		expect "*oot@*"
	}
	xdev0 {
		spawn sudo ssh -p 8044 yhm@192.168.2.149
		expect "*password*"
		send "xnw.com\r"
		expect "*login:*"
		send "su b\r"
		expect "*密码*"
		send "b\r"
		send "ssh docker\r"
		expect "login:"
		send ". gotoc 0\r"
		expect "*root@*"
	}
	demo0 {
		spawn sudo ssh -p 8044 yhm@192.168.2.149
		expect "*password*"
		send "xnw.com\r"
		expect "*login:*"
		send "su b\r"
		expect "*密码*"
		send "b\r"
		send "ssh demo\r"
		expect "login:"
		send ". gotoc 0\r"
		expect "*root@*"
	}
}
send "tail -f $file\r"
interact

3. 自动打开今天的日志


#!/usr/bin/expect

set timeout 30
set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]
spawn sudo ssh -p 8044 yhm@192.168.2.149
expect "*password*"
send "xxx.com\r"
expect "*login:*"
send "su b\r"
expect "*密码*"
send "b\r"
send "ssh w167\r"
expect "uploader@"
send "cd /data/t/xnw\r"
expect "uploader@"
send "tail -f laravel/storage/logs/laravel-$date.log\r"
interact

4. 自动登录到服务器的docker环境 (2020年09月27日09:56:53 更新)


#!/usr/bin/expect

set timeout 30
set docker_which [lindex $argv 0]
if {"$docker_which"==""} {
set docker_which 0
}
set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]
spawn sudo ssh -p 8044 yhm@192.168.2.149
expect "*password*"
send "xnw.com\r"
expect "*login:*"
send "su b\r"
expect "*密码*"
send "b\r"
send "ssh docker\r"
expect "login:"
send ". gotoc $docker_which\r"
expect "*root@*"
send "cd /data/t/xnw/laravel\r"
expect "*root@*"
send "tail -f storage/logs/laravel-$date.log\r"
interact

编程笔记 » expect实用示例

赞同 (200) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽