shell日常练习——expect 实现百台服务器公钥推送

作者简介:
陈志珂(头条号:强扭的瓜不好吃)目前就职于中国最大的安卓应用软件公司,任高级工程师,现在公司任php开发工程师,python开发工程师,高级运维工程师,公众号“铅笔学园”运维内容合作作者之一。
铅笔学园:IT资源分享|知识分享,做初级程序员的指明灯

#!/usr/bin/bash

>ip.txt

password=root

rpm -q expect &>/dev/null

if [ $? -ne 0 ];then

yum -y install expect

fi

if [! -f ~/.ssh/id_rsa ];then

ssh-keygen -P "" -f ~/.ssh/id_rsa #这个是设置公钥的密码为空,而且不用敲回车键

fi

for i in {2..254}

do

{

ip=192.168.234.$i

ping -c1 -W1 $ip &>/dev/null

if [ $? -eq 0 ];then

echo "$ip">>ip.txt

/usr/bin/expect<<-EOF

spawn ssh-copy-id $ip

expect {

"yes/no" {send "yes "; exp_continue }

"password:" {send "$password"}

}

expect eof

EOF

fi

}&

done

wait

echo "finish...."
Shell脚本是一种用于自动化执行命令行指令的脚本语言,常用于Linux和Unix系统中。Expect是一个用来自动化控制交互式应用程序如telnet、ftp、passwd、fsck、rlogin、ssh甚至是一个脚本语言解释器的工具。通过Expect,可以编写脚本来自动执行交互式程序,比如SSH连接到远程服务器进行操作。 要使用ShellExpect脚本通过SSH服务器进行文件备份和git clone操作,可以分为以下几个步骤: 1. 使用Shell脚本编写自动化任务。 2. 使用Expect脚本处理SSH连接时的交互,比如输入密码。 3. 在连接成功后执行文件备份命令,比如使用`rsync`或者简单的`scp`命令。 4. 执行`git clone`来获取远程仓库的代码。 下面是一个简单的示例流程: 首先,你需要一个Expect脚本来处理SSH连接和密码输入: ```bash #!/usr/bin/expect set timeout -1 set host "your_ssh_server" set user "your_username" set password "your_password" set remote_path "/path/to/remote/directory" set local_path "/path/to/local/directory" spawn ssh -o StrictHostKeyChecking=no $user@$host expect { "yes/no" { send "yes\r"; exp_continue } "$password" { send "$password\r" } } expect "# " send -- "cd $remote_path\r" send -- "git clone [repository-url]\r" send -- "exit\r" expect eof ``` 然后,你可以在Shell脚本中调用这个Expect脚本来执行整个过程: ```bash #!/bin/bash # 调用expect脚本 expect_script="path_to_your_expect_script.exp" $expect_script # 等待expect脚本执行完毕 sleep 5 # 使用rsync进行文件备份 rsync -avz --progress [local_user]@[ssh_server]:$remote_path $local_path echo "备份和克隆操作完成" ``` 注意,使用密码明文存储和脚本自动化这些敏感操作需要考虑安全性。一个更安全的方法是使用SSH密钥认证来代替密码,然后配置Expect脚本来使用私钥。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值