Linux设置主机互信 /// 安装配置subversion(SVN) /// shell脚本

一、设置主机互信

修改主机名

<默认的主机名是localhost.localhostDomain>

第一步:修改主机名的两种方式:

(1) hostnamectl set-hostname 新主机名
(2) vi /etc/hostname 在其中把[主机名]改成[新主机名]需要重启才能生效

第二步:主机列表 vi /etc/hosts 在其中加上:主机ip地址 主机名

例如:
在这里插入图片描述

添加互信:

第三步: 生成密钥:

ssh -keygen -t rsa -P “”

第四步:复制到密钥校验文件:

cat ~/.ssh/id_rsa.pub > .ssh/authorized_keys

第五步: 传输到需要复制的机器:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p22 用户名@对应的主机名

第六步:测试连接主机:

ssh 用户名@主机名/ip地址:连接到对应的主机
如:[root@hadoop5 ~]#ssh root@hadoop1

二、安装配置subversion(SVN)

2.1 SVN是什么?

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
repository(源代码库):源代码统一存放的地方
Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交):当你已经修改了代码,你就需要Commit到repository
Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

SVN采用客户端/服务器体系,项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后在此基础上,每个开发人员可以在自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。 [3]
SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

2.2 SVN配置步骤

需要安装服务器端和客服端

1.安装subversion服务器端
yum -y install subversion
2.创建SVN资源库目录
mkdir /svndata
3.生成SVN资源目录
svnadmin create /svndata/projects/jdbc
4.配置SVN项目权限认证
(1) 进入SVN项目库配置文件夹
cd /svndata/projects/jdbc/conf/
(2) 配置SVN读写权限,修改 authz信息:vi authz
在[group]后添加:
[/]
root=rw
(3) 为用户设置初始密码:vi passwd
在最后一行添加:
root=1
备注:此处为 用户名 = 密码
(4) 修改svnserve文件的选项:vi svnserve.conf
1.在 # anon-access = read # auth-access = write 后添加:
anon-access=none
auth-access=write
2.在 # password-db = passwd 后添加:
password-db=passwd
3.在 # authz-db = authz 后添加:
authz-db=authz
启动SVN:svnserve -d -r /svndata
开启SVN默认端口3690

客服端:
1、下载好客户端软件:
在这里插入图片描述

2、在D盘创建一个文件夹:
此时,点击鼠标右键,选择 SVN checkout
填写好在服务器端创建的资源目录名 点击ok,输入刚刚添加的用户名和密码

在这里插入图片描述
3、展示图形化界面在这里插入图片描述
4、在文件夹中放入一个java文件,点击+号,添加相关修改信息,进行update

三、Shell编程

基本语法

1.每一个shell都有头的定义,正常的#!/bin/bash
2.打印:echo “要打印的东西” (单引号 双引号均可)
3. 定义好的脚本需要加上执行权限:chmod +x 脚本路径
4.三种调用方式:
(1) 路径调用:如果在当前目录则使用./test.sh,绝对路径也可
(2) 普通脚本执行:sh 脚本路径
(3) 指定b shell执行: /bin/bash 脚本路径
5.变量的定义
(1) 直接赋值法:a=1 b=”abc” arr=(1 2 3 4)
(2) 引用赋值法:b=a c = a c=ac={b}
(2) 引用命令执行结果赋值: a=ls -l
注意:变量名和等号之间不能有空格,这和熟悉的所有编程语言都不一样
7.执行变量的运算:b=expr KaTeX parse error: Expected 'EOF', got '&' at position 215: …以省略成[[ 条件语句 ]] &̲& 结果语句 11.在单引号中…{a}引用变量

shell脚本自定义函数

1.[function] 函数名(){函数体; } 可以有return语句,但只能return值类型
2.参数的传递:函数内部的参数列表只取决于调用函数时的参数列表,与脚本的参数无直接影响

‘单引号’:当我需要显示的内容为纯文本时,使用单引号
“双引号”:当我需要显示的内容中有引用时,要用双引号。

1、expr使用示例

expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。

下面将使用示例来介绍expr的用法,在介绍之前,需要注意三点:

(1).数值表达式("+ - * / %")和比较表达式("< <= = == != >= >")会先将两端的参数转换为数值,转换失败将报错。所以可借此来判断参数或变量是否为整数。

(2).expr中的很多符号需要转义或使用引号包围。

(3).所有操作符的两边,都需要有空格。

以下是expr示例。

(1).“string : REGEX"字符串匹配示例。要输出匹配到的字符串结果,需要使用”(“和”)",否则返回的将是匹配到的字符串数量。

[root@xuexi ~]# expr abcde : ‘ab(.*)’
cde

[root@xuexi ~]# expr abcde : ‘ab(.)’
c

[root@xuexi ~]# expr abcde : ‘ab.*’
5

[root@xuexi ~]# expr abcde : ‘ab.’
3

[root@xuexi ~]# expr abcde : ‘.cd
4

(2)."index string chars"用法示例。

该表达式是从string中搜索chars中某个字符的位置,这个字符是string中最靠前的字符。例如:

[root@xuexi ~]# expr index abcde dec
3
该命令将对字符串"dec"逐字符分解,首先分解得到第一个字符d,从abcde中搜索到d的位置为4,再分解得到第二个字符e,该字符在abcde中的位置为5,最后得到的字符是c,该字符在abcde中的位置为3。其中3是最靠前的字符,所以命令返回的结果为3。

[root@xuexi ~]# expr index abcde xdc
3
如果chars中的所有字符都不存在于string中,则返回0。

[root@xuexi ~]# expr index abcde 1
0

[root@xuexi ~]# expr index abcde 1x
0

(3)."substr string pos len"用法示例。

该表达式是从string中取出从pos位置开始长度为len的子字符串。如果pos或len为非正整数时,将返回空字符串。

[root@xuexi ~]# expr substr abcde 2 3
bcd

[root@xuexi ~]# expr substr abcde 2 4
bcde

[root@xuexi ~]# expr substr abcde 2 5
bcde

[root@xuexi ~]# expr substr abcde 2 0

[root@xuexi ~]# expr substr abcde 2 -1

(4)."length string"用法示例。该表达式是返回string的长度,其中string不允许为空,否则将报错,所以可以用来判断变量是否为空。

[root@xuexi ~]# expr length abcde
5

[root@xuexi ~]# expr length 111
3

[root@xuexi ~]# expr length $xxx
expr: syntax error

[root@xuexi ~]# if [ ? − n e 0 ] ; t h e n e c h o ′ ? -ne 0 ];then echo ' ?ne0];thenechoxxx is null’;fi
$xxx is null
(6).算术运算用法示例。

[root@xuexi ~]# expr 1 + 2
3

[root@xuexi ~]# a=3
[root@xuexi ~]# b=4

[root@xuexi ~]# expr $a + $b
7

[root@xuexi ~]# expr 4 + $a
7

[root@xuexi ~]# expr $a - $b
-1
算术乘法符号"*"因为是shell的元字符,所以要转义,可以使用引号包围,或者使用反斜线。

[root@xuexi ~]# expr $a * $b
expr: syntax error

[root@xuexi ~]# expr $a ‘*’ $b
12

[root@xuexi ~]# expr $a * $b
12

[root@xuexi ~]# expr $b / $a # 除法只能取整数
1

[root@xuexi ~]# expr $b % $a
1
任意操作符两端都需要有空格,否则:

[root@xuexi ~]# expr 4+$a
4+3

[root@xuexi ~]# expr 4 +$a
expr: syntax error
由于expr在进行算术运算时,首先会将操作符两边的参数转换为整数,任意一端转换失败都将会报错,所以可以用来判断参数或变量是否为整数。

[root@xuexi ~]# expr $a + $c
expr: non-integer argument

[root@xuexi ~]# if [ ? ! = 0 ] ; t h e n e c h o ′ ? != 0 ];then echo ' ?!=0];thenechoa or $c is non-integer’;fi
$a or $c is non-integer

(5).比较操作符< <= = == != >= >用法示例。其中"<“和”>“是正则表达式正的锚定元字符,且”<"会被shell解析为重定向符号,所以需要转义或用引号包围。

这些操作符会首先会将两端的参数转换为数值,如果转换成功,则采用数值比较,如果转换失败,则按照字符集的排序规则进行字符大小比较。比较的结果若为true,则expr返回1,否则返回0。

[root@xuexi ~]# a=3

[root@xuexi ~]# expr $a = 1
0

[root@xuexi ~]# expr $a = 3
1

[root@xuexi ~]# expr $a * 3 = 9
1

[root@xuexi ~]# expr abc > ab
1

[root@xuexi ~]# expr akc > ackd
1

(6).逻辑连接符号"&“和”|"用法示例。这两个符号都需要转义,或使用引号包围。

以下是官方文档中给出的解释,但实际使用过程中是不完全正确的。

"&"表示如果两个参数同时满足非空且非0,则返回第一个参数的值,否则返回0。且如果发现第一个参数为空或0,则直接跳过第二个参数不做任何计算。

"|"表示如果第一个参数非空且非0,则返回第一个参数值,否则返回第二个参数值,但如果第二个参数为空或为0,则返回0。且如果发现第一个参数非空或非0,也将直接跳过第二个参数不做任何计算。

正确的应该是:

"&"表示如果两个参数都非0,则返回第一个参数,否则返回0。但任意一个参数为空,则expr报错。除非空字符串使用引号包围,则处理方法和0一样。

"|"表示如果第一个参数非0,则返回第一个参数的值,否则返回第二个参数。但如果任意一个参数为空,则expr报错。除非空字符串使用引号包围,则处理方法和0一样。

[root@xuexi ~]# expr $abc ‘|’ 1
expr: syntax error

[root@xuexi ~]# expr “$abc” ‘|’ 1
1

[root@xuexi ~]# expr “$abc” ‘&’ 1
0

[root@xuexi ~]# expr $abc ‘&’ 1
expr: syntax error

[root@xuexi ~]# expr 0 ‘&’ abc
0

[root@xuexi ~]# expr abc ‘&’ 0
0

[root@xuexi ~]# expr abc ‘|’ 0
abc

[root@xuexi ~]# expr 0 ‘|’ abc
abc

[root@xuexi ~]# expr abc ‘&’ cde
abc
转载自:https://www.cnblogs.com/f-ck-need-u/p/7231832.html

猜你喜欢

转载自blog.csdn.net/qq_42005540/article/details/114795082
今日推荐