-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathciuls
executable file
·165 lines (148 loc) · 4.3 KB
/
ciuls
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#!/bin/bash
## Script para pegar do dk o ip que o usuario especificado esta conectado
arg1=${1}
arg2=${2}
BRED='\033[1;31m' #Vermelho em negrito
NC='\033[0m' #Sem cor
### Funcao numero da versao ###
version() {
echo "${0} - Versão 2.8"
}
### Funcao mensagem de erro ###
erroMSG() {
echo "Sintaxe errada. Exemplo:"
echo "Uso: $0 [[OPÇÃO...] [USUARIO]])"
}
### Funcao retorna quantidade usuarios encontrados ###
lista() {
for opt in $(seq 1 ${rep})
do
user=$(ssh -q root@dk /usr/bin/smbstatus | grep ${arg2} |head -n ${opt} |tail -n 1 |awk '{print $2}' )
echo "(${opt}) ${user}"
done
}
### Funcao pesquisa nome ###
nome() {
i=1
x=2
contNome=$(ssh -q root@dk ldapsearch -x -h vm-bd1 -b ou=SaoJose,ou=usuarios,dc=cefetsc,dc=edu,dc=br displayName=*${arg2}* |grep uid: | wc -l)
for i in $(seq 1 ${contNome})
do
nome=$(ssh -q root@dk ldapsearch -x -h vm-bd1 -b ou=SaoJose,ou=usuarios,dc=cefetsc,dc=edu,dc=br displayName=*${arg2}* |grep displayName | cut -d ":" -f2 | head -n ${x} | tail -n 1)
uuid=$(ssh -q root@dk ldapsearch -x -h vm-bd1 -b ou=SaoJose,ou=usuarios,dc=cefetsc,dc=edu,dc=br displayName=*${arg2}* |grep uid: | cut -d ":" -f2 | head -n ${i} |tail -n 1)
echo -e "O Usuário ${BRED}${nome}${NC} tem o UID${BRED}${uuid}${NC}."
i=$(echo "${i} + 1"|bc)
x=$(echo "${x} + 1"|bc)
done
}
### Funcao pesquisa ip ###
pesquisa() {
ip=$(ssh -q root@dk /usr/bin/smbstatus | grep ${arg2} |head -n ${choice} |tail -n 1 | cut -d "(" -f2 | cut -d ")" -f1 )
test=$(echo "${ip}" |cut -d ":" -f1)
ipv6=$(echo "2804")
if [ -z ${test} ];
then
ip=$(echo "${ip}" |cut -d ":" -f4)
if [ -z ${ip} ];
then
echo -e "O usuário ${BRED}${arg2}${NC} não possui nenhum IP relacionado."
exit 1
fi
fi
}
### Funcao repeticao ###
repeticao() {
rep=$(ssh -q root@dk /usr/bin/smbstatus | grep ${arg2} |wc -l)
rep=$(echo "${rep} / 2" |bc)
if [ ${rep} -eq 1 ] ;
then
choice=1
elif [ ${rep} -ge 2 ] ;
then
echo "Foram encontrado ${rep} usuários!"
lista
echo -n "Qual sua escolha: "
read choice
elif [ ${rep} ];
then
echo -e "O usuário ${BRED}${arg2}${NC} não possui nenhum IP relacionado."
exit 1
fi
}
### Funcao ajuda ###
helpMSG() {
echo "Nome
CIULS - (C)onsulta (I)P (U)suário (L)ogado (S)amba
Synopse
bash ${0} [opção] [usuário]
Descrição
Este manual foi desenvolvido para facilitar o acesso remoto aos servidores do IFSC,
para funcionar corretamente é necessário que seu usuário esteja no LDAP do ifsc, no
caso de acesso SSH, e é fundamental que a chave publica do SSH do seu usuário esteja
no servidor de arquivos. Para abrir o modo gráfico do acesso remoto é necessário ter
instalado no computador o visualizador de área remota chamado vinagre.
Opções
-g, --grafico Abre o Vinagre para ter acesso remoto.
-h, --help Exibe esta ajuda.
-i, --ip Exibe apenas o ip do usuário. [Opção padrão
caso o usuário não digitar nada.]
-n, --nome Pesquisa o UID de um usuário através
de seu nome.
-p, --permissao Lista todos os grupos que o usuário
especificado tem permissão de acesso.
-s, --ssh Abre uma conexão remota via ssh entre
o usuário logado e o usuário remoto.
-v, --version Exibe a versão do software."
}
############## Inicio do programa #########################
if [ $# -eq 0 ] || [ $# -gt 2 ] ;
then
erroMSG
exit 1
elif [ ${arg1} = "-h" ] || [ ${arg1} = "--help" ] ;
then
helpMSG
exit 1
elif [ ${arg1} = "-v" ] || [ ${arg1} = "--version" ] ;
then
version
exit 1
elif [ -z ${arg2} ] ;
then
arg2=${arg1}
arg1=$(echo "-i")
fi
case ${arg1} in
-g | --grafico )
repeticao
pesquisa
vinagre [${ip}]::5900
;;
-i | --ip )
repeticao
pesquisa
user=$(ssh -q root@dk /usr/bin/smbstatus | grep ${arg2} |head -n ${choice} |tail -n 1 |awk '{print $2}' )
echo -e "O ip do usuario ${BRED}${user}${NC} é ${BRED}${ip}${NC}."
;;
-n | --nome )
nome
;;
-p | --permissao )
repeticao
user=$(ssh -q root@dk /usr/bin/smbstatus | grep ${arg2} |head -n ${choice} |tail -n 1 |awk '{print $2}' )
echo -e "Grupos ao qual o usuario ${BRED}${user}${NC} pertence:"
ssh -q root@dk id ${user}
;;
-s | --ssh )
repeticao
pesquisa
ssh -XC ctic@${ip}
;;
-*)
erroMSG
;;
*)
erroMSG
helpMSG
;;
esac