-
Notifications
You must be signed in to change notification settings - Fork 2
/
easylogin
executable file
·91 lines (83 loc) · 2.25 KB
/
easylogin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/bash
# 从一个目录下快速选择需要登录的服务器ip并登录
#
# ip列表的目录存放于$HOME/.easylogin下,并以目录层级为选择依据
# 例如你在$HOME/.easylogin/project1/subproject文件中存入ip列表
# 那么你使用easylogin project1 subproject来列出对应的ip列表
# 还提供ip搜索功能,-s参数可以使用正则表达式来搜索出对应的ip列表
#
# 依赖shelllib和easyssh,其中easyssh中需要修改用户名和密码
#
#easylogin [-r] [-s regex] [p1 [p2 ...]]
#
#-r 以root用户登录服务器
#-s regex 搜索服务器列表中匹配的行(grep)
#p1,p2... 目录的层级,或者是文件名,这里的顺序为目录的层级,从配置目录的根目录开始
source shelllib
needroot=""
search=""
basedir=$HOME/.easylogin/iplist
if [ ! -d "$basedir" ]; then
echo "No Iplist Found In $basedir"
exit 2
fi
curdir=$basedir
while [ $# -gt 0 ]; do
case $1 in
-r | --root) needroot=1; shift;;
-s | --search) search=$2;shift;shift;;
*) curdir="$curdir/$1";shift;;
esac
done
if [ ! -z "$search" ]; then
if [ -f $curdir ]; then
dirlist=($curdir)
elif [ -d $curdir ]; then
dirlist=(`find $curdir -type f`)
else
echo "未找到相应项目"
exit 3
fi
list=()
for i in ${dirlist[@]}; do
for j in `grep "$search" "$i"`; do
list+=("$j|${i#$basedir}")
done
done
if [ ${#list[@]} -eq 0 ]; then
echo "未找到相应项目"
exit 3
fi
userselect -s "搜索 $search 找到以下这些项目:" "${list[@]}"
ip=`echo "$userselectResult" | awk -F"|" '{print $1}' `
easyssh $ip $needroot
exit
fi
if [ ! -s "$curdir" ]; then
echo "未找到项目${curdir#$basedir}"
exit 3
fi
#选择项目,直至选择到ip文件
while [ ! -f $curdir ]; do
names=()
for i in `ls $curdir`; do
names+=($i)
done
if [ ${#names[@]} -eq 0 ]; then
echo "未找到项目${curdir#$basedir}"
exit 3
fi
userselect -s ${curdir#$basedir}"找到以下这些项目:" "${names[@]}"
curdir=$curdir/$userselectResult
done
ips=()
for i in `cat $curdir`; do
ips+=($i)
done
if [ ${#ips[@]} -eq 0 ]; then
echo "未找到项目${curdir#$basedir}的ip"
exit 3
fi
userselect -s ${curdir#$basedir}"找到以下这些ip:" "${ips[@]}"
ip=`echo "$userselectResult" | awk -F"|" '{print $1}' `
easyssh $ip $needroot