SSH
报nasty错误,要把/root/.ssh/known_hosts清空
PSSH
相对于ssh来说是多线程的,可以并行在多个客户端执行,效率更高,适合100-300台
安装部署
cd /usr/src/;
wget -c ;
cd ;
python setup.py install
报错可能需要源码安装setuptools
wget
解压,进入目录,python setup.py install
管理多个远程主机,要创建一个list文件list.txt
把要管理的IP写进去
需要做免密钥
#ssh-keygen
#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.102
第一次要输密码,以后就不需要了
pssh -i -h list.txt -l root "任何远程执行的命令;echo "/n""
-p 20 指定最大20个线程来运行pssh
-t -1 永不超时
pscp
pscp -h list.txt auto_install_zabbix.sh /tmp/
pssh -i -h list.txt 'cd /tmp/;yes/sh auto_install_zabbix.sh'
pslurp -h list.txt -L /daa/20170519(本地目录) /tmp/zabbix.sh(客户端文件)
pnuke -h list.txt 进程 杀死远程进程
Ansible
维护几千上万台,基于ssh通信,不需要安装agent。
saltstack基于agent通信,还有puppet
基于python开发,维护更简单。
支持免密钥或者密码。
支持sudo普通用户命令
安装
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm;
yum install ansible -y;
cd /etc/ansible/;
这下面有两个文件,hosts和ansible.cfg
hosts是写IP的,可以分组管理
[web]
192.168.1.101 ansible_ssh_user=root ansible_ssh_pass=123456
,cfg文件就改端口,最大连接数
cfg中加上host_key_checking_=False第一次连接就不用yes确认了
ansible免密码连接 http://www.linuxe.cn/post-282.html
安装完成后连接客户端服务器报错:
FAILED => Using a SSH password insteadof a key is not possible because Host Key checking is enabled and sshpass doesnot support this. Please add this host'sfingerprint to your known_hosts file to manage this host.
解决:在ansible 服务器上使用ssh 登陆下/etc/ansible/hosts 里面配置的服务器。然后再次使用ansible 去管理就不会报上面的错误了!但这样大批量登陆就麻烦来。因为默认ansible是使用key验证的,如果使用密码登陆的服务器,使用ansible的话,要不修改ansible.cfg配置文件的ask_pass = True给取消注释,要不就在运行命令时候加上-k,这个意思是-k, --ask-pass ask for SSH password。再修改:host_key_checking= False即可
ansible
-i 指定使用的inventory文件all或者写哪个组web或者直接指定主机IP
-m指定使用的模块,默认为command,还有 -m shell可以代替大部分模块,ansible-doc -l是看有哪些模块
-a 指定模块的参数,可以是命令等等。
-k 可以输密码,没有做免密钥方便
ansible all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
ansible 192.168.1.12* -m yum -a "name=sysstat,screen state=installed"
ansible 192.168.1.12* -m shell -a ""/bin/bash" < test.sh"
创建Ansible Playbook
在/etc/ansible/目录下,新建screen.yaml文件,内容如下:
- hosts: all
remote_user: root
tasks:
- name: yum install screen
shell: yum install screen –y
文件解析:-hosts:all指定对所有hosts生效,remote_user表示远程root,tasks表示需要执行的任务;name显示的名称,shell后面接:需要在远程客户端执行的命令。可以写多个命令,以;分号隔开即可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`
使用方法:ansible-playbook scree.yaml
saltstack
基于CS模式,服务端客户端都要装,ansible是基于ssh,只需要控制端装