怎么通过salt-ssh进行认证

怎么通过salt-ssh进行认证,第1张

salt-ssh 可以独立运行的,不用minion的~ 要是需要用salt-ssh的特殊参数,比如grains获取数据的话,还是需要安装minion的,不然他是不好判断你是redhat,debian的 ~ 说句废话 要是能安装minion,谁还用salt-ssh呀。。。。
这类ssh的集群工具还是不少的,我这边简单分析下优缺点!
pdsh、pssh 这东西是要建立在你做好了key关联之后,他的优点就是简单,并发执行。
Python
1
2
3
4
5
6
7
vi server1txt
192168111
192168112
192168113
192168114
pssh -h server1txt -l root -P dir
expect 最大的有点就是交互,但是要成高性能的话,需要自己写多线程的。
Python
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/expect -f
set toip [lindex $argv 0 ]
set ip 1022014
set password 123123
set timeout 10
spawn ssh root@$ip
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$password\r" }
}
fabric、paramiko python之利器,用过一段时间,该有的都有的,很是强大
Python
1
2
3
4
from fabric import env
envhosts = ['user1@host1:port1', 'user2@host2port2']
envpasswords = {'user1@host1:port1': 'password1', 'user2@host2port2': 'password2'}
但是个人觉得salt-api背靠着saltstack这个大树,前景还是不错的。
salt-ssh 可以代替expect之类的密码推送脚本,另外说明下 salt-ssh 用的是sshpass进行密码交互的,首先看下版本,17版本后才开始有的,现在基本都是2014了。
我们先开始安装 salt-ssh ~
Python
1
2
3
4
git clone >

1、首先,要用CRT软件连接Linux系统。

2、首选,确认是用root用户登录系统的。

输入命令: id ,查看登录用户信息。

3、若修改root自己的密码,直接输入 passwd

输入两遍,新密码即可。

4、若修改其他用户,如oracle 的密码,可直接输入passwd oracle

输入两遍性新密码即可。

5、这样就修改成功了。

《使用PSSH批量管理Linux》 一文中,已经学习了使用pssh批量管理linux的技巧。而很多时候,我们需要定时执行一些任务,或者需要定时执行一些批量任务。因此,本文就来研究一下linux设置定时任务的方法。

主要参考 Linux Crontab 定时任务 、 Linux定时任务Crontab命令详解 和 Linux 定时任务详解 。

cron(crond)是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。另外,由于使用者自己也可以设置计划任务,所以,linux系统也提供了使用者控制计划任务的命令:crontab命令。

crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab 文件就是系统任务调度的配置文件。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron/crontabs/ 目录中,其文件名与用户名一致。

假设我们使用的是Ubuntu14045 Server版,查看 /etc/crontab ,内容为:

第一行SHELL变量指定了系统要使用哪个shell;第二行PATH变量指定了系统执行 命令的路径。
接下来的命令格式为:
m h dom mon dow user command
英文全拼为:
minute hour day month week user commond

注意, /var/spool/cron 目录中的用户调度任务,没有user一项,因为文件名已经代表了user。

在以上各个字段中,还可以使用以下特殊字符:

crontab命令格式为:
crontab [-u username] [file] [ -e | -l | -r ]

设置定时任务和时间紧密相关,如果服务器的时区时间设置和本地不同,就不能保证计划任务的正确执行。所以使用crontab的第一步,是调节好服务器的时间。

下面参考 Ubuntu 1604将系统时间写入到硬件时间BIOS ,对服务器时间进行调节。

时间是有时区的,无论硬件时间还是 *** 作系统时间。hwclock的时区在/etc/default/rcS文件中设置,里面有一个参数UTC,默认值为yes,表示使用UTC时区,如果设置为no,那表示使用osclock的时区。建议hwclock与osclock设置相同的时区,也就是no。

1、查看服务器硬件时间
sudo hwclock -r ,看到的时间格式为: Wed 23 May 2018 11:02:17 AM HKT -0031663 seconds

2、查看服务器系统时间
date ,看到的时间格式为: Wed May 23 11:02:41 HKT 2018

3、设置hwclock和osclock时区相同
sudo vim /etc/default/rcS ,找到:

修改为:

4、将系统时间写入硬件时间
sudo hwclock -w

5、修改系统时区
osclock的时区配置文件为/etc/timezone,不建议直接修改配置文件。

如果你想修改为CST时间,那么执行 sudo tzselect 命令时,选择Asia->China->Beijing Time即可,这时会提示使用Asia/Shanghai时区。(ubuntu和centos通用)

6、设置即刻生效
执行 date ,发现时区没有变化,依然是HKT。

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo ntpdate timewindowscom

如果执行ntpdate报错:ntpdate[18409]: no server suitable for synchronization found ,那么就换一个时间同步工具。
sudo apt-get install rdate
sudo rdate -s time-bnistgov

再次执行 date ,发现时区已经变成了CST。

7、硬件时间同步
sudo hwclock -r ,发现硬件时间落后。
sudo hwclock -w ,再次把系统时间写入硬件时间,同步完成。

实例1:每分钟、每小时、每天、每周、每月、每年执行

实例2:每小时的第3和第15分钟执行
3,15 myCommand

实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 /2 myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 1 myCommand

实例6:每晚的21:30重启smb
30 21 /etc/initd/smb restart

实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 /etc/initd/smb restart

实例8:每周六、周日的1 : 10重启smb
10 1 6,0 /etc/initd/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 /etc/initd/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb
0 23 6 /etc/initd/smb restart

实例11:每一小时重启smb
0 /etc/initd/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 /etc/initd/smb restart

实例13:每月的4号与每周一到周三的11点重启smb
0 11 4 mon-wed /etc/initd/smb restart

实例14:一月一号的4点重启smb
0 4 1 jan /etc/initd/smb restart

实例15:每小时执行/etc/cronhourly目录内的脚本
01 root run-parts /etc/cronhourly
run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了。

目标:每分钟查看一下ganglia的状态,并保存到/tmp/log/ganglia目录。

1、创建/tmp/log/ganglia目录
sudo mkdir -p /tmp/log/ganglia

sudo chmod a+w /tmp/log/ganglia

2、编辑crontab
crontab -e ,选择编辑器为vim

3、在crontab文件中添加一行

4、查看crontab任务
crontab -l ,看到任务已经添加成功。

5、等待了五分钟,发现/tmp/log/ganglia目录下啥也没有。
sudo service cron status ,状态正常。
sudo /etc/initd/cron restart ,重启cron试试。
又等待了五分钟,发现/tmp/log/ganglia目录下依然空空。

莫非是因为pssh没有使用绝对路径? whereis pssh ,找到pssh路径为 /usr/lib/pssh ,修改crontab为:

然而,并没有用。
还是查看下crontab日志吧!

以下主要参考 Ubuntu下用crontab 部署定时任务 。

1、编辑50-defaultconf
sudo vim /etc/rsyslogd/50-defaultconf

2、把cron前的井号去掉,也就是修改为:

3、重启rsyslog服务
sudo service rsyslog restart

4、重启crontab服务
sudo service cron restart

5、查看crontab日志
less /var/log/cronlog

果然发现了问题:

也就是说,命令确实按时执行了,只不过没有执行完,被百分号截断了,导致log文件没有正常生成!

修改crontab为:

终于,log文件成功生成,nice!但是,文件内容是空的!因为, /usr/lib/pssh 是一个目录,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置为 /usr/bin/parallel-ssh ,修改crontab:

至此,问题圆满解决。
实际使用的时候,一天获取一次ganglia的状态就够了,所以crontab改成:

以上,每天执行一次定时任务,抓取ganglia的运行状态保存到日志文件中。紧接着,我们的目标是使用脚本检查当天的日志文件,如果发现ganglia运行异常,则产生一个错误日志。

1、假设日志文件ganglia-20180524log的内容为:

2、参考 grep命令最经常使用的功能总结 ,编写脚本checkgangliash

3、执行
chmod a+x checkgangliash

/checkgangliash

如果所有客户机的ganglia运行正常,就会输出All services are runing!。如果有的客户机ganglia进程不存在,则会在/tmp/log/ganglia/目录下生成当天的错误日志。

4、设置定时运行
因为日志的检查工作要在日志生成之后,所以时间上延后十分钟。

上面的脚本,还有很多要改进的地方。比如有的客户机宕机了,上面的脚本检查不出来。比如有的客户机ganglia服务没有启动,那么具体是哪几台?针对这两个问题,下面进行改进。假设已经知道客户机的数量为10。

参考 csplit命令 ,checkgangliash脚本修改为:

以上脚本,实现了当客户机数量不为10的时候,进行报错;当客户机ganglia服务没有启动时,进行报错,并且筛选出所有没有启动ganglia的客户机。

本文中,我们先学习了crontab的基础知识和基本用法。然后通过监控ganglia这一个应用场景来具体学习crontab的详细使用方法,包括查看cron日志的方法,crontab中命令转义的方法,定时执行脚本的方法,以及审阅日志脚本的编写和进阶。

至此,还不够完美,因为我们需要每天登录管理机查看有没有错误日志。下一篇 Linux设置邮件提醒 中,我们将会研究linux设置邮件提醒的方法。审阅完日志后,如果脚本能够给我们发送一封邮件,告知我们审阅的结果,那么我们就不必再每天查看错误日志。

《Linux集群和自动化运维》(余洪春)电子书网盘下载免费在线阅读

链接:>提取码:HURK  

书名 :Linux集群和自动化运维

豆瓣评分:67

作者: 余洪春

出版社:机械工业出版社

出版年: 2014-9

页数: 401

内容简介:

《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》是Linux运维领域畅销的、公认的经典著作《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》的姊妹篇,它从系统安全运维、运维故障排查、自动化运维、集群架构4个维度讲解了构建大规模和高性能Linux服务器集群所需要的技术、工具、方法和技巧,二者一脉相承,互为补充,内容涵盖了运维工程师构建高性能服务器需要掌握的各种知识。本书在内容上继承了前面一本书中被读者认可的诸多优点:实用(以实际生产环境为背景)、实战(包含大量案例)、易懂,同时也改进了读者反馈的不足之处。

全书共14章,分为四个部分:安全运维篇(1-3章)主要讲解了服务器安全运维、网络安全运维和数据安全运维的关键技术和方法;运维故障排查篇(4-5章)从服务器系统和应用软件两个维度讲解了运维故障的排查思路,以及常见的和经典的运维故障的解决方案;自动化运维篇(6-9章)主要讲解了海量主机的自动化部署和配置、自动化监控、分布式监控等大规模集群运维所需的各种工具(pssh、pdsh、mussh、Ganglia、nagios、Centreon等)和方法;集群架构篇(10-14)讲解了如何构建和优化基于Web和MySQL数据库的高性能集群和高可用的负载均衡集群。

作者简介 :

高俊峰(南非蚂蚁),资深运维专家、系统架构师、DBA和技术顾问,从事Linux/Unix服务器系统的架构、运维和管理多年。擅长大规模服务器集群的运维和管理,在故障诊断与排除、自动化运维、安全运维、性能调优、虚拟化等方面积累了大量的实战经验。国内知名IT技术社区51CTO的博客专家和ChinaUnix论坛高可用集群版块的版主,同时还活跃于ITPUB等技术社区,在社区和论坛里发表了大量技术文章,深受欢迎。此外,他还著有畅销书《循序渐进Linux》和《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,后者是本书的姊妹篇,是Linux运维领域公认的经典著作。

从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一。

我觉得不会有人不同意,因为无论在哪里这都是你的日常 *** 作之一。有很多办法都能处理这个任务,我们试着加以概括。你可以挑一个喜欢的方法。当然,看看其他命令也能在别的地方帮到你。

我已经在自己的环境下测试过所有的 命令 和 脚本 了,因此你可以直接用到日常工作当中。

通常大家都倾向 scp,因为它是文件复制的原生命令native command之一。但本文所列出的其它命令也很好用,建议你尝试一下。

文件复制可以轻易地用以下四种方法。

scp:在网络上的两个主机之间复制文件,它使用 ssh 做文件传输,并使用相同的认证方式,具有相同的安全性。

rsync:是一个既快速又出众的多功能文件复制工具。它能本地复制、通过远程  shell  在其它主机之间复制,或者与远程的 rsync 守护进程daemon 之间复制。

pscp:是一个并行复制文件到多个主机上的程序。它提供了诸多特性,例如为 scp 配置免密传输,保存输出到文件,以及超时控制。

prsync:也是一个并行复制文件到多个主机上的程序。它也提供了诸多特性,例如为 ssh 配置免密传输,保存输出到 文件,以及超时控制。

方式 1:如何在 Linux 上使用 scp 命令从本地系统向远程系统复制文件/文件夹?

scp 命令可以让我们从本地系统复制文件/文件夹到远程系统上。

我会把 outputtxt 文件从本地系统复制到 2g CentOS com 远程系统的 /opt/backup 文件夹下。

# scp outputtxt root@2gCentOScom:/opt/backup

outputtxt                                                                                              100% 2468    24KB/s  00:00

从本地系统复制两个文件 outputtxt 和 passwd-upsh 到远程系统 2gCentOscom 的 /opt/backup 文件夹下。

# scp outputtxt passwd-upsh root@2gCentOScom:/opt/backup

outputtxt 100% 2468 24KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

从本地系统复制  shell -script 文件夹到远程系统 2gCentOscom 的 /opt/back 文件夹下。

这会连同shell-script 文件夹下所有的文件一同复制到/opt/back 下。

# scp -r /home/daygeek/2g/shell-script/ root@:/opt/backup/

outputtxt 100% 2468 24KB/s 00:00

ovhsh      100% 76 01KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

passwd-up1sh 100% 7 00KB/s 00:00

server-listtxt 100% 23 00KB/s 00:00

方式 2:如何在 Linux 上使用 scp 命令和 Shell  脚本 复制文件/文件夹到多个远程系统上?

如果你想复制同一个文件到多个远程服务器上,那就需要创建一个如下面那样的小 shell 脚本。

并且,需要将服务器添加进 server-listtxt 文件。确保添加成功后,每个服务器应当单独一行。

最终,你想要的脚本就像下面这样:

# file-copysh

#!/bin/sh

for server in `more server-listtxt`

do

  scp /home/daygeek/2g/shell-script/outputtxt root@$server:/opt/backup

done

完成之后,给 file-copysh 文件设置可执行权限。

# chmod +x file-copysh

最后运行脚本完成复制。

# /file-copysh

outputtxt 100% 2468 24KB/s 00:00

outputtxt 100% 2468 24KB/s 00:00

使用下面的脚本可以复制多个文件到多个远程服务器上。

# file-copysh

#!/bin/sh

for server in `more server-listtxt`

do

  scp /home/daygeek/2g/shell-script/outputtxt passwd-upsh root@$server:/opt/backup

done

下面结果显示所有的两个文件都复制到两个服务器上。

# /file-cpsh

outputtxt 100% 2468 24KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

outputtxt 100% 2468 24KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

使用下面的脚本递归地复制文件夹到多个远程服务器上。

# file-copysh

#!/bin/sh

for server in `more server-listtxt`

do

  scp -r /home/daygeek/2g/shell-script/ root@$server:/opt/backup

done

上述脚本的输出。

# /file-cpsh

outputtxt 100% 2468 24KB/s 00:00

ovhsh      100% 76 01KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

passwd-up1sh 100% 7 00KB/s 00:00

server-listtxt 100% 23 00KB/s 00:00

outputtxt 100% 2468 24KB/s 00:00

ovhsh      100% 76 01KB/s 00:00

passwd-upsh 100% 877 09KB/s 00:00

passwd-up1sh 100% 7 00KB/s 00:00

server-listtxt 100% 23 00KB/s 00:00

方式 3:如何在 Linux 上使用 pscp 命令复制文件/文件夹到多个远程系统上?

pscp命令可以直接让我们复制文件到多个远程服务器上。

使用下面的 pscp 命令复制单个文件到远程服务器。

# pscppssh -H 2gCentOScom /home/daygeek/2g/shell-script/outputtxt /opt/backup

[1] 18:46:11 [SUCCESS] 2gCentOScom

使用下面的 pscp 命令复制多个文件到远程服务器。

# pscppssh -H 2gCentOScom /home/daygeek/2g/shell-script/outputtxt ovhsh /opt/backup

[1] 18:47:48 [SUCCESS] 2gCentOScom

使用下面的 pscp 命令递归地复制整个文件夹到远程服务器。

# pscppssh -H 2gCentOScom -r /home/daygeek/2g/shell-script/ /opt/backup

[1] 18:48:46 [SUCCESS] 2gCentOScom

使用下面的 pscp 命令使用下面的命令复制单个文件到多个远程服务器。

# pscppssh -h server-listtxt /home/daygeek/2g/shell-script/outputtxt /opt/backup

[1] 18:49:48 [SUCCESS] 2gCentOScom

[2] 18:49:48 [SUCCESS] 2gDebiancom

使用下面的 pscp 命令复制多个文件到多个远程服务器。

# pscppssh -h server-listtxt /home/daygeek/2g/shell-script/outputtxt passwd-upsh /opt/backup

[1] 18:50:30 [SUCCESS] 2gDebiancom

[2] 18:50:30 [SUCCESS] 2gCentOScom
使用下面的命令递归地复制文件夹到多个远程服务器。

# pscppssh -h server-listtxt -r /home/daygeek/2g/shell-script/ /opt/backup

[1] 18:51:31 [SUCCESS] 2gDebiancom

[2] 18:51:31 [SUCCESS] 2gCentOScom


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/13456748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-10
下一篇 2023-08-10

发表评论

登录后才能评论

评论列表(0条)

保存