专栏
天翼云开发者社区

轻量级一键自动发布脚本的方法

2023-05-17 10:43:59 34阅读

一、编写一个shell脚本,内部使用expect+spawn实现远程登陆和操作其他主机的功能。

#从文件列表中获取ip,挨个处理
cat $ip_path_file | while read line
do
    ip_addr=$line
    #上传文件到指定目录下
    scp $shell_script $user_name@$ip_addr:$user_dir
    #进入目标主机操作
    deal_script $ip_addr
done

function deal_script()
{
    my_ip_addr=$1
#先打包,再scp
expect <<-EOF
set timeout -1
spawn ssh $my_ip_addr
expect "]*"
send "sudo -i \r"
expect "]*"
send "cp $shell_script ${shell_dir}/ \r"
expect "]*"
send "cd ${shell_dir} \r"
expect "]*"
send "chown root:root $shell_script_file_name \r"
expect "]*"
send "nohup sh $shell_script_file_name $shell_params $my_ip_addr > /dev/null 2>&1 & \r"
expect "]*"
send "exit\r"
expect "]*"
send "exit\r"
expect eof
EOF
}

此功能包含了远程登陆、拷贝程序或脚本到远程主机上、赋权、后台启动程序或脚本、最后退出。

二、详细说明

1、shell发布脚本程序:负责读取mysql数据表,然后与各个需要发布的主机交互,异步发布程序、执行程序、获取发布和执行结果,根据seq_id登记最终执行结果,最后查看数据库中的表即可知道发布和执行结果;

2、expect模块功能:expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信,用于主主机与其他主机远程交互的中间命令;

3、ip列表ip_path_file 可以存放在本地文件中。

  • 0
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
康****彬

康****彬

7 篇文章 0 粉丝
关注

轻量级一键自动发布脚本的方法

2023-05-17 10:43:59 34阅读

一、编写一个shell脚本,内部使用expect+spawn实现远程登陆和操作其他主机的功能。

#从文件列表中获取ip,挨个处理
cat $ip_path_file | while read line
do
    ip_addr=$line
    #上传文件到指定目录下
    scp $shell_script $user_name@$ip_addr:$user_dir
    #进入目标主机操作
    deal_script $ip_addr
done

function deal_script()
{
    my_ip_addr=$1
#先打包,再scp
expect <<-EOF
set timeout -1
spawn ssh $my_ip_addr
expect "]*"
send "sudo -i \r"
expect "]*"
send "cp $shell_script ${shell_dir}/ \r"
expect "]*"
send "cd ${shell_dir} \r"
expect "]*"
send "chown root:root $shell_script_file_name \r"
expect "]*"
send "nohup sh $shell_script_file_name $shell_params $my_ip_addr > /dev/null 2>&1 & \r"
expect "]*"
send "exit\r"
expect "]*"
send "exit\r"
expect eof
EOF
}

此功能包含了远程登陆、拷贝程序或脚本到远程主机上、赋权、后台启动程序或脚本、最后退出。

二、详细说明

1、shell发布脚本程序:负责读取mysql数据表,然后与各个需要发布的主机交互,异步发布程序、执行程序、获取发布和执行结果,根据seq_id登记最终执行结果,最后查看数据库中的表即可知道发布和执行结果;

2、expect模块功能:expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信,用于主主机与其他主机远程交互的中间命令;

3、ip列表ip_path_file 可以存放在本地文件中。

文章来自专栏

CDN网关

4 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 0
    点赞
  • 0
    收藏
  • 0
    评论