Linux系列——自动化批量安装软件

前言

使用脚本为集群自动化安装软件,能给开发者省很多时间。

准备工作:

带有安装包的服务器需要有httpd、scp命令(也可以写到脚本里面)

yum install -y httpd openssh-clients

被安装的服务器需要有wget命令

yum install -y openssh-clients wget

步骤

1. 编写脚本文件 boot.sh

#!/bin/bash

# 需要安装软件的服务器列表
SERVERS="192.168.137.112 192.168.137.113"
# 登陆服务器的root密码
PASSWORD=123456
# 带有安装包的服务器
BASE_SERVER=192.168.137.111

yum install -y httpd openssh-clients

auto_ssh_copy_id() {
	expect -c "set timeout -1; #设置不超时
		spawn ssh-copy-id $1; #启动新进程,用于执行shell命令
		expect {	#从发起交互的命令的进程接受字符串,用于匹配我们预想的字符串
			*(yes/no)* {send -- yes/r;exp_continue;} #自动输入数据
			*assword:* {send -- $2\r;exp_continue;} #自动输入数据
			eof	       {exit 0;}
		}";
}

ssh_copy_id_to_all() {
	for SERVER in $SERVERS
	do
		auto_ssh_copy_id $SERVER $PASSWORD
	done
}

ssh_copy_id_to_all

for SERVER in $SERVERS
do
	scp install.sh root@$SERVER:/root@$SERVER
	ssh root@$SERVER /root/install.sh
done

2.编写脚本文件 install.sh

#!/bin/bash

BASE_SERVER=192.168.137.111
yum install -y openssh-clients wget
wget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gz
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1.7.0_45
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

 3.给脚本加执行权限

chmod +x boot.sh install.sh

4.执行boot.sh

./boot.sh

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
linux分为:redhat linux系列和debian系列。 X Window是一种协议。 unix图形环境是CDE:common desktop environment通用桌面环境。 linux系统结构:硬件、内核层、shell层、应用层、用户。 在安装linux的时候,会弹出 CD Found To begin testing the CD media before installation press OK. Choose Skip to skip the media test and start the installation. OK Skip 选择:"OK"就开始检测CD光盘的完好性,"Skip"则跳过光盘介质的检测,直接开始安装。 说明:下载镜像文件的时候一般会给出MD5值,只要检测MD5值是不是一样就行了,就不必进行检测了。检测过程很长。 安装linux的时候,选择语言为简体中文,并不代表安装完后linux就显示为简体中文,这里选择语言是安装过程的语言。这是安装界面上会提示:What language would you like to use during the installation process?在安装过程中你想使用什么语言? linux中每一个目录可以单独划分磁盘空间,但这个目录仍在/目录下,例如将tmp目录单独划分磁盘空间为100M,如果/目录在第一块磁盘中,则tmp在第二块磁盘中。但tmp目录仍然在/目录下。在做服务器时应该将web目录单独划分一个磁盘空间。如果sda1表示/分区,则sda2表示tmp分区。sdb表示第二块scsi硬盘,即电脑上有两块硬盘。sda1和sda2相当于windows下的c盘和d盘的关系。 各种接口的磁盘在linux中文件名分别为: /dev/sd[a-p][1-15]:为SCSI,SATA,USB,Flash等接口的磁盘文件名。第一块硬盘为sda,第二块硬盘为sdb,根据主板上的接口来决定的。将第一块硬盘分两个区,就有sda1和sda2。 /dev/hd[a-p][1-63]:为IDE接口的磁盘文件名。 linux中必须要划分的分区有两个:根分区/、swap分区。 linux中的文件(普通文件或设备文件等)都必须有挂在点,只有挂载到一个目录下才能访问,swap分区是不需要挂载点的,在分区的时候,将文件系统类型选为swap,挂载点自动会变为灰色。一般linux中的swap大小为内存的两倍。swap类似windows下的虚拟内存。 切换用户命令:su - 用户名 vim中的插入命令: a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入文本 I 在本行开始处插入文本 o 在光标下一行插入新行附加文本 O 在光标上一行插入新行附加文本 查找时区分大小写使用命令:set noic 查找时忽略大小写使用命令:set ic 退出命令:wq与ZZ命令等价。 导入文件:在末行模式下,输入:r /home/text,即将text文件中的内容导入到当前编辑的文件中,导入到光标处。在gvim中也可以使用此命令。 在末行模式下输入:!命令,如:!ls /home,就会显示ls命令的结果,会提示按enter键或任意键返回。在gvim中也可以执行此命令,如:!dir,就会显示当前目录中的信息。 导入文件命令和!命令以结合起来使用,在末行模式下输入:r !命令。就会将命令的结果导入到当前文件光标处。 bin:binary usr:user sbin:super binary linux中命名规则:除了/之外,所有的字符都合法。大小写敏感,以.开头的文件是隐藏文件。 命令格式:命令 -选项 参数 当有多个选项时,可以写在一起。 ..表示当前目录的父目录,cd ..当中一定有个空格。 文件处理命令:ls 命令名称:ls 命令英文原意:list 命令所在路径:/bin/ls 执行权限:所有用户 功能描述:显示当前或指定目录中的文件 语法:ls 选项[-ald] [文件或目录] -a 显示所有文件,包括隐藏文件,a是all的缩写。 -l 详细信息显示,l是long的缩写。 -d 查看目录属性 在一个目录中查看当前目录的详细信息:ls -ld .即可。 在一个目录中查看当前目录的父目录的详细信息:ls -ld ..即可。 root执行的命令一般放在/sbin或/usr/sbin目录中,所有用户都能执行的命令一般放在/bin或/usr/bin目录中。 d 表示目录 - 表示二进制文件 l 软链接文件link 详细分析:drwxr-xr-x 2 root root 4096 12-01 20:52 bin drwxr-xr-x r:read w:write x:execute执行 -:表示无此权限 所有者:u user 所属组:g group 其他人:o other 2:表示硬链接数。 第一个root:是所有者。 第二个root:是所属组。 4096:目录大小,不是目录中所有文件的大小。 12-01 20:52是创建时间或最后修改的时间 bin 文件名或目录名 Linux中数据块是储存数据的基本数据单元,在linux中可以设置3中数据块大小分别是1024(1kB),2048(2KB),4096(4KB)。数据块大小决定了文件磁盘占有量,如果设置了数据块大小是1024,不管文件有多大,至少要占1KB的空间,所以可以根据存放文件的大小来合理设置数据块大小。 设置数据块:mkfs.ext3 -b 2046 /dev/hda5,格式化并设置数据块为2KB。另外linux在每个分区都有保留块,这是专门留给root用户及其所属组使用,别的用户是无法使用的,一般为总数据块的5%,但是如果你的磁盘大的话,就显的浪费了。 mkfs.ext3 -b 2046 -m 2 /dev/hda5。格式化并设置数据块为2KB,设置保留块为2%。或者用tune2fs -m 2 /dev/hda4 这种方法不用格式化就可设置。 tune2fs -l /dev/hda5,可以查看文件系统的详细信息. tune2fs -j /dev/hda4,可以将ext2转换为ext3而不损坏数据。 文件系统的检查工具:fsck e2fsck e2fsck 用时有危险,不能很好的辨识文件系统,特别是ext2,ext3混用时。 fsck得用法:fsck -t ext3 /dev/hda5 或 fsck.ext3 /dev/hda5。 root用户使用su -用户名切换用户时是不需要密码的,但是普通用户切换账户需要密码。 查看一个文件的信息,ls -l /.../文件名。 查看一个目录的信息,ls -ld 目录名。 查看/目录的详细信息,而不是/目录下目录或文件的详细信息。-d查看目录属性。 ls的-d选项是查看目录属性。 文件处理命令:mkdir 命令名称:mkdir 命令英文原意:make directories 命令所在路径:/bin/mkdir 执行权限:所有用户 语法:mkdir [ 目录名] 功能描述:创建新目录 范例:$ mkdir newdir 文件处理命令:touch 命令名称:touch 命令所在路径:/bin/touch 执行权限:所有用户 语法:touch [文件名] 功能描述:创建空文件 范例:$ touch newfile 文件处理命令:cp 命令名称:cp 命令英文原意:copy 命令所在路径:/bin/cp 执行权限:所有用户 语法:cp -R [源文件或目录] [ 目的目录] -R 复制目录 -p 复制后的文件的时间和原文件时间一样 功能描述:复制文件或目录 范例: $ cp file1 file2 dir1 将文件file1、file2复制到目录dir1 $ cp -R dir1 dir2 将dir1下的所有文件及子目录复制到dir2 文件处理命令:mv 命令名称:mv 命令英文原意:move 命令所在路径:/bin/mv 执行权限:所有用户 语法:mv [源文件或目录] [目的目录] 功能描述:移动文件、更名 范例: $ mv file1 file2 将当前目录下文件file1更名为file2 $ mv /home/zk/text.c /home/text.cpp 将文件text.c移动到目录home下,并更名为text.cpp 文件处理命令:rm 命令名称:rm 命令英文原意:remove 命令所在路径:/bin/rm 执行权限:所有用户 语法:rm -r [文件或目录] -r 删除目录 功能描述:删除文件 范例: $ rm file3 删除文件file3,删除时会出现提示。 $ rm -r dir1 删除目录dir1,删除目录时会出现提示。 由于linux中的别名机制,使用rm等价与使用rm -i,这样在删除文件或目录时会有提示,如果不想出现提示内容,需要加选项-f。写脚本的时候需要加上-f,因为批量删除文件或目录不需要每次都提示询问。 在unix中rm删除文件是不是出现提示询问的。 文件处理命令:cat 命令名称:cat 命令英文原意:concatenate and display files 命令所在路径:/bin/cat 执行权限:所有用户 语法:cat [文件名] 功能描述:显示文件内容 范例:$ cat /etc/issue $ cat /etc/services cat查看文件内容,当文件较长时,无法查看到文件开头的内容,只能看到最后的内容。cat是一次性显示完文件内容。 文件处理命令:more 命令名称:more 命令所在路径:/bin/more 执行权限:所有用户 语法:more [文件名] (空格) 或f 显示下一页 (Enter) 显示下一行 q或Q 退出 功能描述:分页显示文件内容 范例: $ more /etc/services 文件处理指令:head 指令名称:head 指令所在路径:/bin/head 执行权限:所有用户All User 语法:head -num [文件名] -num 显示文件的前num行 功能描述:查看文件的前几行 范例:$ head -20 /etc/services 不加选项默认是查看前10行。 文件处理指令:tail 指令名称:tail 指令所在路径:/bin/tail 执行权限:All User 语法:tail -num [文件名] -num 显示文件的后num行 -f 动态显示文件内容 功能描述:查看文件的后几行 范例:$ tail -30 /etc/services 查看日志文件的时候,日志文件是动态变化的。 文件处理命令:ln 命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 语法:ln [源文件][ 目标文件] 创建硬链接 ln -s [源文件][ 目标文件] 创建软链接 功能描述:产生链接文件 范例: $ ln -s /etc/issue /issue.soft 创建文件/etc/issue的软链接/issue.soft $ ln /etc/issue /issue.hard 创建文件/etc/issue的硬链接/issue.hard $ln -s /etc/issue /issue.soft 用ls -l查看软链接文件有如下信息 lrwxrwxrwx root root 10 12-01 23:12 /issue.soft ->/etc/issue 软链接文件的权限都是lrwxrwxrwx,信息中有一个箭头指向原文件,且软链接文件的大小很小,时间和原文件也不同。软链接文件类似windows下的快捷方式。 1、不允许给目录创建硬链接; 2、只有在同一文件系统中的文件之间才能创建链接。 生成一个硬链接文件后查看原文件和硬链接文件,除了文件位置或文件名不同外,其余的信息都是相同的。硬链接文件和原文件是同时更新的,因为他们有相同的inode节点。索引节点inode:Linux为每个文件分配一个称为索引节点的号码inode,可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。系统是通过索引节点(而不是文件名)来定位每一个文件。建立硬连接实际上只是增加了一个目录项,但并没有复制文件数据区,原文件的数据区由两个文件共享。这一方面能够节约大量磁盘空间,同时可以保证两个文件能同步更新。 ls -i或--inode 显示文件和目录的inode编号。 权限管理命令:chmod 命令名称:chmod 命令英文原意:change the permissions权限 mode of a file 命令所在路径:/bin/chmod 执行权限:
Current release version: 3.00 (Feb 2 2015) Source tarball jhead-3.00.tar.gz (69 k) Pre-built Windows executable jhead.exe (166 k) Pre-built Linux executable (built on Centos) jhead (77 k) Pre-built OS-X Intel executable (version 2.97) jhead (24 k) ----------------- 简介 一个现成更改照片时间的程式--jhead,由网页中,releases表里下载110k的十分好用。 下载jhead时,记得把jhead程序存放在要更改的照片文件夹里,不然无法使用。 它的强大在于它 一、提供了其他工具所不能企及的功能 二、强大的批处理能力 唯一的问题是:jhead不是个window程式,它是个DOS程式,许多用window的人,对DOS并不熟,因此,说明jhead使用法如下: jhead这个DOS程式必需在DOS下执行,如何在windows中启动DOS? 以windowsXP为例: 开始——运行 在开启处键入cmd C:\DocumentsandSettings\user。这即是我们的电脑硬碟(简化来说。其实只是硬碟的一部份)。试着click这一行最右边,并键入dir。 dir是DOS的command,意思是--显示目录,此时就会看到一串有的字,其中有个桌面,试着键入---cd桌面。 这时出现\DocumentsandSettings\user\桌面,表示已进入桌面这个目录,cd是change directory(改变目录)的意思,试着键入---cd要更改的照片文件夹名称。 这时出现\DocumentsandSettings\user\桌面\你要更改的照片文件夹名称。表示已进入你想更改的目录。接着键入jhead参数 据说该工具最早是在linux环境下开发的,现已被移植到多个平台,包括windows。 但,目前为止并没有GUI,也就是图形外壳,所以理解并使用该工具前你必须了解一些简单的命令行知识 跟所有的命令行工具一样,它的使用方法为:jhead参数列表jpg文件列表 比如: jhead-se1jpg处理单个文件 jhead-se2009_[0-9]jpg处理指定的多个文件 jhead-se*jpg处理所有文件 另外,你甚至可以用**通配符来代替子目录,从而实现对指定目录的遍历!包括子目录的子目录。如: jhead-sec:\tmp\**\*jpg 当然有些参数也允许你联合使用。比如: jhead-se-q1jpg2jpg3jpg 我们举几个例子(jhead如何使用)(命令和参数、文件夹、文件之间必须空格): (一)jhead-da2009:01:01-2008:01:01*jpg 把当前目录下的所有拍摄日期为2008/01/01的照片更改时间为2009/01/01。这在相机日期设置有误时非常有用。(更改照片拍摄日期) (二)jhead-ds2009*jpg 把当前目录下的所有jpg文件的日期年份更改为2009年,保持日期的其他部分(月、日及时间)不变! (三)jhead-nf%Y_%m%d_i*jpg 把当前目录下的所有jpg文件的文件名更改为:年4位_月2位日2位_4位序号jpg如:2009_1201_0001jpg (四)jhead-seld_picjpg>atxt 有时候你可能需要把照片的exif信息转入文体保存,你可以直接重定向输出就可以了 (五)jhead-st"bak\&i"*jpg 把当前目录下的所有文件的缩略图复制保存到bak目录下并与原文件名同名。 (六)jhead-te01jpg02jpg 单个文件导入,把01jpg的信息导入到02jpg,覆盖原来的。 jhead-te"bak\&i"*jpg 批量导入,把bak目录下的jpg文件信息按文件名一一对应的导入当前目录下的jpg文件!引号不省略!! 实例一下吧 jhead命令(参数)大全 -V(大写的V)显示jhead的版本 -h获得帮助 -autorot根据exif中记录的水平方向信息转动照片 -norot清除exif中记录的水平方向信息 -v(小写的v)详细的exif信息显示 -exifmap显示头信息,总之跟v不一样 -se简化显示 -c精简显示(比-se更简单) -dc删除jpg信息中的备注 -de完全删除exif信息 -du删除非原始exif信息,例如Photoshop之类编辑后修改exif留下的信息 -purejpg删除所有jpg文件非必须信息相当于-de-dc-du的集合,文件将减小数k -mkexif创建新的最小exif信息(覆盖原有的的exif信息),不明白这有什么用 -di删除IPTC(Photoshop格式兼容)信息 -dx删除XMP(photoshop文件信息) -te从其他jpg文件导入exif信息到当前文件 -dc删除jpg信息中的备注 -ce使用系统默认编辑器编辑备注。运行时会自动打开文本编辑器,录完信息,保存并关闭后,信息会自动被写入备注 -cs导出备注到文本文件。如:jhead-cs1txt1jpg -ci从文体文件导入备注。如:jhead-ci1txt1jpg -clstring直接输入备注。如:jhead–cl我爱无常版主1jpg -dt删除exif中的缩略图此缩略图一般240x160象素,10k大小 -st[name]将exif中的缩略图复制为另一个jpg文件 -rt[name]用另一个jpg文件替换exif中的缩略图 -rgt[size]刷新exif缩略图,其中[size]为缩略图的最大边长 -ft将jpg文件的“修改时间”修改为exif信息中记录的拍摄时间 -dsft把照片exif信息时间设置为文件修改时间 -da[date1]-[date2]把拍摄日期为data2的照片日期修正为data1;date格式为yyyy:mm:dd或yyyy:mm:dd+hh:mm或yyyy:mm:dd+hh:mm:ss -ts[time]直接修改exif中的时间,格式为yyyy:mm:dd-hh:mm:ss -ds[date]直接修改exif中的日期,格式为yyyy:mm:dd或yyyy:mm或yyyy -ta[+|-]h[:mm[:ss]]修正时差,根据时区确定,例如+1:00或者-1:00 -n[format-string]将照片文件名修改为exif信息中记录的“数字化时间”,保留原文件名;如果exif数字化时间不可用,则将文件名修改为文件的“修改时间” -nf[format-string]与"-n"相同功能相同,不保留原文件名 format-string格式说明 %d日(01-31) %H小时(00-23) %j一年中的第几天(001-366) %m月(01-12) %M分钟(00-59) %S秒(00-59) %U一年中的第几周(00-53) %w星期几(0-6,周日为0) %y两位数纪年(00-99) %Y四位数纪年 %i添加数字序号,也可以指定位数。如:i(生成4位序号,不足的高位补零) %f原文件名 -q不显示程序运行信息,和其他参数一起使用。这在编写批处理脚本时非常有用 -cmdcommand调用其他程序,如:jhead-cmd"mogrify-qlity80&i"*jpg -exonly不处理没有exif信息的文件,要和其他参数一起使用 -a修改不同扩展名的同名文件名。拍摄的avi短片exif信息存储在同名thm文件中,可用此指令给avi文件更名一般与-n共同使用
window与linux美中不足的就是自动化操作,linux中只要简单的shell脚本就能实现大量批处理操作,可是windows中大部分程序主要GUI(界面)完成的,在这种近况下大量的冗余操作无聊而又容易出错。有没有办法完美的windows自动化呢?终于找到好东西了autoit3 AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件, 它被设计用来在Windows GUI(用户界面)中进行自动操作. 通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动化任务, 而这是其它语言所无法做到或尚无可靠方法实现的 (比如VBScript和SendKeys). AutoIt 非常小巧,完全运行在所有windows操作系统上. (thesnow注:现在已经不再支持win 9x,微软连XP都能放弃,何况一个win 9x支持), 并且不需要任何运行库. AutoIt 最初是为PC(个人电脑)的"批量处理"而设计, 用于对数千台PC进行(同样的)配置. 现在,autoit是一个支持复杂表达式, 自定义函数,循环等的强大脚本软件. AutoIt 可以做的事: 简单易懂的类 BASIC 表达式 模拟键盘,鼠标动作事件 操作窗口与进程 直接与窗口的"标准控件"交互(设置/获取 文字,移动,关闭,等等) 脚本可以编译为标准可执行文件 创建用户图形界面接口(GUI) COM支持 正则表达式 直接调用外部DLL 和 Windows API 函数 程序运行为功能(让程序运行于其它账户) 详细易懂的帮助文件于基于社区的支持论坛 完全兼容于 Windows 2000 / XP / 2003 / Vista / 2008 Unicode 与 64位 运算支持 高精度,易使用的数学运算 可以运行于 Windows Vista Account Control (UAC) AutoIt 被设计得尽可能小, 并且不用依赖外部DLL文件或添加注册表项目即可独立运行. 也可以安全的成为服务运行. 脚本可以使用Aut2Exe编译为可独立运行的文件 此外我们还设计了 AutoIt 的 ActiveX 和 DLL 版本 —— AutoItX 这是个组件化的语言(COM 同一 DLL 文件中的标准DLL函数). AutoItX 将使得您可以加入一些AutoIt 独有的特性到您最常用的脚本语言或程序设计语言中去! 最重要的是,AutoIt 将继续是免费的!!!!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前方一片光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值