Skip to content

Commit 27e52ed

Browse files
committed
sed usage
1 parent af8ec05 commit 27e52ed

File tree

5 files changed

+246
-2
lines changed

5 files changed

+246
-2
lines changed

shell/sed.txt

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,24 @@ sed
2020

2121
ɾ��ƥ����
2222

23-
sed -i '/ƥ���ַ���/d' filename ��ע����ƥ���ַ����DZ���������Ҫ�����������ǡ������ǵú����ǣ�
23+
sed -i '/ƥ���ַ���/d' filename1 filename2 ��ע����ƥ���ַ����DZ���������Ҫ�����������ǡ������ǵú����ǣ�
2424

2525
�滻ƥ�����е�ij���ַ���
2626

27-
sed -i '/ƥ���ַ���/s/�滻Դ�ַ���/�滻Ŀ���ַ���/g' filename
27+
sed -i '/ƥ���ַ���/a testtest' filename1 filename2 ��ƥ���ַ����������ַ���
28+
29+
sed -i '/ƥ���ַ���/s/�滻Դ�ַ���/�滻Ŀ���ַ���/g' filename1 filename2
30+
31+
32+
sed -i 's/�滻Դ�ַ���/�滻Ŀ���ַ���/2' filename1 filename2 �����ڽ�βָ�����֣���ʾ�滻��2��ƥ����ַ���
33+
�����������test��������
34+
key1=value1���޸�Ϊkey1=newValue
35+
�����ַ�����
36+
1.��ɾ���
37+
sed -i "/^key1=*/d" test
38+
sed -i "/^key2=*/a key1=newValue" ---ע��˴�Ҫѡ��һ��������ڴ�֮ǰ����֮�����
39+
2.ֱ���滻 --ע����˫����
40+
sed -i "/^key1=*/s/=.*/=newValue/" test
41+
42+
43+

shell/shell_call_jar.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
1 Shell���ò���ȡִ��jar����ķ���ֵ
2+
http://www.cnblogs.com/dzblog/p/6914146.html
3+
java��ͨ�� System.out.println(URL);���ؽ�����ӽ��̺͸����̻Ṳ���ļ����������
24
java -jar app.jar "args" | tail -1
35

46
2 �����Ҫ����JVM�˳�ʱ��״̬��Ҳ��δ�����ɡ�������֪����Ϊ����ִ����ϣ������˳�����0����0�ķ��ض��Ƿ������˳�������java����Ҳ������ôд��
@@ -12,3 +14,9 @@ public class Test {
1214
java -jar test.jar
1315
echo $?
1416

17+
3 Shell�е���javaʱ�IJ���
18+
temp_file=/var/tmp/temp$$_file
19+
ava -cp $CLASS_PATH mainClass��$arg1�� ��$filePath�� ��$arg2�� ��$arg3�� > $temp_file
20+
21+
typeset result=cat $temp_file
22+
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# SSHAutoLogin
2+
一个SSH登录服务器的shell脚本,通常我们使用ssh登录服务器都要自己输入密码,而且容易输入错误,
3+
每当遇到这种情况甚是苦恼,下定决心自己写一个不用输入密码自动登录ssh的shell脚本。
4+
## 添加配置
5+
在ssh_login文件中,修改以下配置
6+
```shell
7+
CONFIGS=(
8+
"服务器名称 端口号 IP地址 登录用户名 登录密码"
9+
"服务器名称 端口号 IP地址 登录用户名 登录密码"
10+
)
11+
```
12+
比如可以修改成:
13+
```shell
14+
CONFIGS=(
15+
"服务器名称 22 220.181.57.217 root baidu.com"
16+
"新浪服务器 22 66.102.251.33 root sina.com"
17+
)
18+
```
19+
或者在脚本同目录下新建一个文件server_config,按照以上格式写入文件,每个配置单独一行如下:
20+
```
21+
服务器名称 22 220.181.57.217 root baidu.com
22+
新浪服务器 22 66.102.251.33 root sina.com
23+
```
24+
## 使用
25+
1).给ssh_login文件执行的权限,并执行ssh_login
26+
```shell
27+
chmod u+x ssh_login
28+
./ssh_login
29+
```
30+
2).可以将ssh_login 拷贝至 /usr/local ,之后便可以在终端中全局使用ssh_login
31+
```shell
32+
chmod u+x ssh_login
33+
cp ssh_login /usr/local/
34+
ssh_login
35+
```
36+
3).命令使用
37+
38+
`ssh_login list` - 查看所有服务器配置
39+
40+
`ssh_login 1` - 登录第一个配置的服务器
41+
42+
43+
## 提示
44+
使用本脚本前,请确认已安装expect
45+
46+
1) Linux 下 安装expect
47+
```shell
48+
yum install expect
49+
```
50+
2) Mac 下 安装expect
51+
```shell
52+
brew install homebrew/dupes/expect
53+
```
54+
55+
## 特殊说明
56+
如果密码中含有以下特殊字符,请按照一下规则转义:
57+
- \ 需转义为 \\\\\
58+
- } 需转义为 \\}
59+
- [ 需转义为 \\[
60+
- $ 需转义为 \\\\\\$
61+
- \` 需转义为 \\`
62+
- " 需转义为 \\\\\\"
63+
64+
```
65+
如密码为'-OU[]98' 在CONFIG配置中写成'-OU\[]98'
66+
否则,提示要手动输入密码
67+
```
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#!/bin/bash
2+
3+
# Function : 使用except无需输入密码自动登录ssh
4+
# Author :
5+
# Date : 2016/01/14
6+
# Github :
7+
8+
#默认服务器配置项
9+
# "服务器名称 端口号 IP地址 登录用户名 登录密码"
10+
CONFIGS=(
11+
"服务器名称 22 220.181.57.217 root baidu.com"
12+
"新浪服务器 22 66.102.251.33 root sina.com"
13+
)
14+
15+
#读取自定义服务器配置文件(server_config)列表,合并服务器配置列表
16+
if [ -f server_config ]; then
17+
while read line
18+
do
19+
CONFIGS+=("$line")
20+
done < server_config
21+
fi
22+
23+
#服务器配置数
24+
CONFIG_LENGTH=${#CONFIGS[*]} #配置站点个数
25+
26+
if [[ $CONFIG_LENGTH -le 0 ]] ;
27+
then
28+
echo "未检测到服务器配置项!"
29+
echo "请在脚本CONFIGS变量中配置或单独创建一个server_config文件并配置"
30+
exit ;
31+
fi
32+
33+
#服务器配置菜单
34+
function ConfigList(){
35+
for ((i=0;i<${CONFIG_LENGTH};i++));
36+
do
37+
CONFIG=(${CONFIGS[$i]}) #将一维sites字符串赋值到数组
38+
serverNum=$(($i+1))
39+
echo "---(${serverNum})--${CONFIG[0]}(${CONFIG[2]})---"
40+
done
41+
}
42+
43+
#登录菜单
44+
function LoginMenu(){
45+
if [ ! -n $1 ]; then
46+
AutoLogin $1
47+
else
48+
echo "-------请输入登录的服务器序号---------"
49+
ConfigList
50+
echo "请输入您选择登录的服务器序号: "
51+
fi
52+
}
53+
54+
#选择登录的服务器
55+
function ChooseServer(){
56+
read serverNum
57+
if [[ $serverNum -gt $CONFIG_LENGTH ]] ;
58+
then
59+
echo "输入的序号不正确,请重新输入:"
60+
ChooseServer ;
61+
return ;
62+
fi
63+
if [[ $serverNum -lt 1 ]] ;
64+
then
65+
echo "输入的序号不正确,请重新输入:"
66+
ChooseServer ;
67+
return ;
68+
fi
69+
70+
AutoLogin $serverNum;
71+
}
72+
73+
#自动登录
74+
function AutoLogin(){
75+
76+
num=$(($1-1))
77+
CONFIG=(${CONFIGS[$num]})
78+
echo "正在登录【${CONFIG[0]}"
79+
expect -c "
80+
spawn ssh -p ${CONFIG[1]} ${CONFIG[3]}@${CONFIG[2]}
81+
expect {
82+
\"*assword\" {set timeout 6000; send \"${CONFIG[4]}\n\"; exp_continue ; sleep 3; }
83+
\"yes/no\" {send \"yes\n\"; exp_continue;}
84+
\"Last*\" { send_user \"\n成功登录【${CONFIG[0]}】\n\";}
85+
}
86+
87+
interact"
88+
echo "您已退出【${CONFIG[0]}"
89+
90+
}
91+
92+
# 程序入口
93+
if [ 1 == $# ]; then
94+
if [ 'list' == $1 ]; then
95+
ConfigList
96+
else
97+
AutoLogin $1
98+
fi
99+
else
100+
LoginMenu
101+
ChooseServer
102+
fi

useful_shells/function_utils.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#! /bin/bash
2+
3+
#set -x
4+
5+
6+
function copyfile()
7+
{
8+
local srcfile=$1
9+
local dstfile=$2
10+
11+
cp $srcfile $dstfile
12+
13+
return 0
14+
}
15+
16+
#copyfile ./src.txt ./des.txt
17+
18+
19+
function factorial
20+
{
21+
factorial=1
22+
for (( i=1;i <= $1;i++ ))
23+
do
24+
#$[] 啥用法?
25+
factorial=$[ $factorial * $i ]
26+
done
27+
echo $1的阶乘是:$factorial
28+
}
29+
#echo '程序名':$0,用于求阶乘
30+
#factorial $1
31+
32+
33+
g_var=
34+
function mytest()
35+
{
36+
if [ $1 = "1" ]; then
37+
echo "arg1 = $1"
38+
g_var=test
39+
return 1 # return to pipe only
40+
else
41+
g_var=default
42+
return 0
43+
fi
44+
45+
}
46+
mytest $1
47+
echo "result = " $?
48+
result=`mytest $1`
49+
echo $result
50+
echo "g_var ; " $g_var
51+

0 commit comments

Comments
 (0)