当我们需要维护的服务器有几百台上千台时,服务器的批量和自动化维护脚本就显得异常关键。本文讨论实现批量化管理的几个关键技术。
一、使用key 登陆并建立互信,以secureCRT 为例
1.使用公钥登陆的sshd 设置
vi /etc/ssh/sshd_config
修改:
PermitRootLogin yes 为 PermitRootLogin no
PasswordAuthentication yes 为PasswordAuthentication no
2.将secureCRT 生成的公钥上传的需要互信服务器上,使用 ssh-keygen -i -f Identity.pub >> /home/wang/.ssh/authorized_keys 导入公 钥。
勾选 secureCRT 全局选项-->ssh2-->启用openssh 代理程序转发(这个很关键),wang 用户使用私钥登陆,则使用wang 用户的相同公钥上的服务器间就建立互信关系。
例: 可以直接使用 ssh 登陆到192.168.20.2下,而不需要输入密码等
也可以使用scp /home/wang/test.txt 而直接传递文件。
ssh -i /home/lixin/.ssh/authorized_keys $a <<EOF
/usr/local/nginx/conf/vhosts/cms_vhosts/add.sh $1
EOF
第二种linux 多机互信的方法:
在服务器A 和B 上使用wang 用户执行执行:ssh-keygen -t rsa
将B 服务器上生成的 公钥id_rsa.pub复制到A服务器wang用户下的.ssh 相同目录,cat id_rsa.pub(B) >>/home/wang/.ssh/authorized_keys (A)则就可以从服务器B上使用
ssh ) 而登陆的服务器A,而无需要密码等
su - wang -c "ssh -i /home/wang/.ssh/id_rsa "
二、 使用sudo 使普通用户特定的管理员命令
以下以wang 用户为例
visudo
加入:wang ALL=(ALL) NOPASSWD: /bin/kill, /usr/local/nginx/sbin/nginx, /usr/sbin/userdel
则wang 这个普通用户就可以在不需要密码的情况下使用这些命令了
例: /usr/bin/sudo /usr/sbin/userdel test
三、什么是expect?
Expect是一个用来实现自动交互功能的软件套件。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。
Expect工作原理
从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。
Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。