MySamba Server 0.1
Publicado por Julian Lennon Gonçalves de Souza Leite 27/03/2006
[ Hits: 5.177 ]
Homepage: http://openservers.no.comunidades.net
Este é um script de mais de 1000 linhas para administrar o Samba. Como não sou grande entendedor do Samba nem tenho onde testá-lo na prática, testem pra mim e me enviem sujestões. Com ele vc pode fazer com o Samba um servidor de:
->PDC
->Wins
->Arquivos
->CDROM
->Impressora
->Data/hora
Favor, madem sugestões ou correções para o meu e-mail.
#!/bin/sh
#Início da função de configuração do MySamba, deverá ser chamada depois, láaaaaaem baixo...
#Segue o padrão LSB, mais se sua distro é teimosa e tem os arquivos em outros locais, é só mudar
#a variável abaixo smbdir=/etc/samba para, "por exemplo": smbdir=/usr/local/etc/samba
#
#Favor, vá lá no fim do arquivo para ver Notas do Autor.
#Variáveis
DIALOG=dialog
if [ ! $DIALOG ]
then
echo "O programa de interface $DIALOG nao foi encontrado."
sleep 3
exit 1
fi
$DIALOG --title "Loading..." --infobox "Carregando\nVariável DIALOG\n###########..................................." 5 50
mydialog=$DIALOG
sleep 3
$DIALOG --title "Loading..." --infobox "Carregando\nVariável do diretório Samba \n######################........................" 5 50
smbdir=/etc/samba
sleep 3
$DIALOG --title "Loading..." --infobox "Carregando\nVariável do logotipo MySamba Server \n#################################............." 5 50
SAMBAX="MySamba Server 0.1"
sleep 3
$DIALOG --title "Loading..." --infobox "Carregando\nVariável que testa a instalação do MySamba \n##############################################" 5 50
filemysamba=/usr/local/bin/mysamba
sleep 3
##################
MINIIF () {
if [ $? != 0 ];then
$DIALOG --title "Atenção" --yesno "Você cancelou a configuração no meio do caminho,\n
tem certeza que quer cancelar(yes) ou continuar(no)." 0 0
if [ $? == 0 ]; then
confdozero
fi
fi
}
##################
$DIALOG --title "Loading..." --infobox "Carregando\nLoading Completed \n##############################################" 5 50
sleep 4
#Variables loadeds to memory
#Fim variáveis
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
#################################################################################################
#TODAS A FUNÇÕES SEPARADAS E ORGANIZADAS
################
GGRUPO () {
GROUP=$($DIALOG --stdout --inputbox 'Digite o nome do grupo ou domínio onde o servidor MySamba trabalhará:' 0 0)
MINIIF
echo "workgroup = $GROUP">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
HOST () {
H=`hostname`
NAME=$($DIALOG --title "Nome server" --stdout --inputbox "Digite o nome que você quer dar ao servidor MySamba. Exemplo:\n\n$H" 0 0)
MINIIF
echo "netbios name = $NAME">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
WINSRESOLVER () {
$DIALOG --yesno "Você quer que seu servidor MySamba forneça o serviço Wins? Wins é serviço de resolução de\nnomes semelhante ao DNS, só que voltado para o NetBIOS.\nOBS: Nunca coloque mais de um servidor\n Wins na mesma rede.\nOBS2: Se estiver configurando uma subrede com masquerade para acesso a um PDC\n ou um servidor WINS, você terá que mexer no gateway central para apontar uma rota para o gateway \n masquerade. O motivo disto é porque o masquerade do Linux atua somente nos cabeçalhos, mas o IP da\nestação é enviada e processada pelo PDC para retornar uma resposta. Da mesma forma, este IP é registrado\nno servidor WINS para uso das estações de trabalho. Isto só vai ser resolvido quando for escrito um módulo\nde conntrack para conexões SAMBA (até o lançamento do kernel 2.4.22, isso ainda não ocorreu).(Yes) para sim,\ndar suporte Wins (No) para não." 0 0
if [ $? == 0 ]
then
echo "wins support = yes">>$smbdir/smb.conf
echo "wins proxy = no">>$smbdir/smb.conf
echo "dns proxy = no">>$smbdir/smb.conf
echo "max wins ttl = 518400">>$smbdir/smb.conf
else
$DIALOG --yesno "Na sua rede tem algum servidor Wins, se tiver, escolha (Yes) para \n você especivicar o IP do servidor Wins da sua rede, ou (No) para não." 0 0
if [ $? == 0 ]
then
IPWIN=$($DIALOG --stdout --inputbox "Favor, digite o IP do servidor Wins da sua rede, já que\no MySamba não é quem está servindo este serviço." 0 0)
echo "wins server = $IPWIN">>$smbdir/smb.conf
else
echo "sem wins"
fi
fi
}
################
################################################################
################################################################
################
PLACAS () {
OPTION=$($DIALOG --stdout --no-cancel --title "Interface de rede" --menu "Se você tem só uma placa de rede (na maioria dos casos) escolha eth0. Se você tem duas\nplacas de rede, eth0 (deve estar conectado a Web por ADSL ou outra banda larga) e eth1 \nconectado a sua rede, escolha eth1 para só a rede local acessar o MySamba. Se escolher \n(Todas), há acessos por todas as placas, isso é para o caso das placas estarem\nligadas apenas para a sua rede local." 0 0 0 eth0 "Apenas uma placa. A eth0." eth1 "A segunda placa, eth1, para a sua rede." Todas "Compratilhar por todas.")
case $OPTION in
eth0)
echo "interfaces = eth0">>$smbdir/smb.conf
;;
eth1)
echo "interfaces = eth1">>$smbdir/smb.conf
;;
Todas)
echo "Não preciso fazer nada..."
;;
esac
}
################
################################################################
################################################################
################
SEGURANCA () {
SECU=$($DIALOG --stdout --no-cancel --title "Segurança do MySamba" --menu "Você terá de escolher entre dois níveis de segurança. A opção (share) não há muita segurança,\né a mesma coisa de um compartilhamento com o Windows98, todos tem acesso ao compartilhamento, é bom \npara um compartilhamento simples, mais a responsabilidade é sua. A opção (user) é a mais recomendável,\n nela especifica-se quais usuários terão acesso a um compartilhamento. Atenção, para isto, os usuários das\n máquinas Windows devem ser cadastrados no Sistema Linux com o mesmo nome (login) e senha (password) que está\n nos Windows. Para criar estes usuários vá no menu principal do MySamba>Configurar>UsuáriosSamba. Este nível\n de segurança equivale a um compartilhamento pelo WindowsNT/XP/2000." 0 0 0 share "Segurança para compartilhamentos\n simples." user "Maior segurança e controle." server "Só pre quem entende.")
MINIIF
echo "security = $SECU">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
CRIPTO () {
ENCRIPT=$($DIALOG --stdout --no-cancel --title "Suporte a senhas encriptadas" --menu "Se não tiver o Windows95 original (pois ele não suporta senhas encriptadas), escolha (Yes), pois o windows95\n OSR/2,Windows98,SE,ME,NT,XP,2000 utilizam senhas encriptadas." 0 0 0 yes "Na maioria ds casos." no "Se os clientes são Windows 95 original.")
echo "encrypt passwords = $ENCRIPT ">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
TIPODEIMPRESSAO () {
TPIMPRESS=$($DIALOG --stdout --no-cancel --title "Tipo de impressão." --menu "Você pode escolher entre os sete tipos de impressão abaixo listados, o padrão é BSD." 0 0 0 bsd "É o padrão." cups "Esse é uma alternativa." sysv "sem comentários" plp "sem comentários" lprng "sem comentários" aix "sem comentários" hpux "sem comentários" qnx "sem comentários")
echo "printing = $TPIMPRESS">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
NIVEL () {
LEVEL=$($DIALOG --stdout --inputbox "Digite qual será o valor do OS Level do MySamba. O padrão é 33, só que com esse valor,\nse ouver máquinas com WindowsNT/2000/XP e se ocorrer eleições de Master Browser entre\neles e o Samba, o Windows ganhará. Recomendo que coloque um valor por volta de 100, \nassim o Samba sempre será o Master Browser da rede, já que ele é o servidor." 0 0)
MINIIF
echo "os level = $LEVEL">>$smbdir/smb.conf
echo "dns proxy = no">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
DATACLOCKSERVER () {
$DIALOG --yesno "Quer que o MySamba também seja servidor de Data/Hora.Isso é útil para sincronizar\na Data/Hora das estações com o servidor da rede. Escolha Yes ou No." 0 0
if [ $? == 0 ];
then
echo "time server = yes">>$smbdir/smb.conf
$DIALOG --msgbox 'Sincronizando a data/hora no Cliente\n
--------------------------------------------
Na estação cliente Windows, use o seguinte comando:\n
NET TIME \\SERVIDOR /WORKGROUP:GRUPO /SET /YES\n
Um local interessante para colocação deste comando\n
é na pasta Iniciar da estação Windows, pois todos \n
os comandos que estejam nesta pasta são executados\n
quando o sistema é iniciado.\n
Exemplos:\n
"net time \\linux /set /yes" = Sincroniza a hora com o servidor\n
\\linux e não pede confirmação (/yes).\n
"net time \\linux /WORKGROUP:pinguim /set /yes" - Sincroniza a\n
hora com o servidor "\\linux" do grupo de trabalho pinguim\n
(/WORKGROUP:pinguim) e não pede confirmação (/yes)' 0 0
else
echo "sem MySamba data server..."
fi
}
################
################################################################
################################################################
################
IPS () {
IPACESS=$($DIALOG --title "IPs Livres" --stdout --inputbox "Aqui você pode dizer que IPs ou faixa de IPs TERÃO acesso ao $COISA.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de \nIPs como:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Veja um exemplo onde tem acesso \npara as máquinas da faixa de IP 10.0 e 192.168.2\n\n10.0. 192.168.2.\nLembrando que \nse você não digitar nada, todas as máquinas terão acesso.\n\nAgora digite os endereços,\nse quizer:" 0 0)
echo "hosts allow = $IPACESS">>$FILEIPDIR
sleep 1
NOIPACESS=$($DIALOG --title "IPs Negados" --stdout --inputbox "Aqui você vai dizer que IPs ou faixa de IPs NÃO TERÃO acesso ao $COISA.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de IPs\n como:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Ex:\n\n10.0.4.3 10.0.2. 192.168.4.\nVocê pode deixar em branco que não interfere em nada. Atenção, se você digitar um IP de \numa máquina que tem acesso na opção anterior e colocar por acidente seu IP aqui, ou a faixa \nde IP ao qual ele está subordinado, ele continuará tendo acesso, pois a opção anterior prevalece.\n\nAgora digite os endereços, se quizer:" 0 0)
echo "hosts deny = $NOIPACESS">>$FILEIPDIR
}
################
################################################################
################################################################
################
HOMES () {
SOLER=$($DIALOG --stdout --no-cancel --title "Diretórios Home" --menu "Uma coisa bem interessante é que cada usuário pode acessar seu respectivo diretório\npessoal pela rede. Por exemplo, se você criou um usuário pelo MySamba com o nome de João,\n seu diretório neste computador está localizado em /home/João, e ele pode ser visto pela rede.\nVocê pode limitar esse acesso para somente leitura. Escolha (yes) para cada usuário ver seu \ndiretório neste servidor como somente leitura ou (no) para permitir escrita." 0 0 0 yes "Somente leitura." no "Permitir escrita.")
echo "[homes]">>$smbdir/smb.conf
echo "comment = Diretórios Home">>$smbdir/smb.conf
echo "read only = $SOLER">>$smbdir/smb.conf
BROW=$($DIALOG --stdout --no-cancel --title "Diretórios Home" --menu "Você que que cada usuário veja seu respectivo diretório ou todos os usuários da\nrede vejam todos os diretórios HOME." 0 0 0 yes "Cada usuário ver o seu diretório \npessoal." no "Permitir que toda a rede veja os diretórios.")
echo "browseable = $BROW">>$smbdir/smb.conf
echo "valid users = %S">>$smbdir/smb.conf
echo "create mode = 0664">>$smbdir/smb.conf
echo "directory mode = 0775">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
PRINTERGLOBAL () {
echo "printcap name = lpstat">>$smbdir/smb.conf
echo "[printers]">>$smbdir/smb.conf
echo "comment = All Printers">>$smbdir/smb.conf
echo "path = /var/spool/samba">>$smbdir/smb.conf
echo "create mask = 0700">>$smbdir/smb.conf
echo "guest ok = yes">>$smbdir/smb.conf
echo "printable = yes">>$smbdir/smb.conf
echo "print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers.">>$smbdir/smb.conf
echo "lpq command = lpstat -o %p">>$smbdir/smb.conf
echo "lprm command = cancel %p-%j">>$smbdir/smb.conf
echo "browseable = yes">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
FINAL () {
########
echo '#MySamba'>>$smbdir/smb.conf
cat $smbdir/smb.conf>$smbdir/GLOBAL
########
sleep 1
$DIALOG --msgbox "Parabéns, você criou uma configuração base com sucesso.\nQuando voltar ao menu principal, crie os usuários samba,\nesses usuários são essenciais se você escolheu o nível de\nsegurança USER. Vá para o menu principal>Configurar>User\npara adicionar ou remover usuários." 0 0
}
################
################################################################
################################################################
################
NETLOGON () {
if [ ! -d $smbdir/netlogon ]; then
mkdir $smbdir/netlogon
fi
echo "[netlogon]">>$smbdir/smb.conf
echo "comment = Network Logon Service">>$smbdir/smb.conf
echo "path = $smbdir/netlogon">>$smbdir/smb.conf
echo "guest ok = no">>$smbdir/smb.conf
echo "writable = yes">>$smbdir/smb.conf
echo "share modes = no">>$smbdir/smb.conf
echo "browseable = no">>$smbdir/smb.conf
mkdir $smbdir/profiles
echo "[profiles]">>$smbdir/smb.conf
echo "path = $smbdir/profiles">>$smbdir/smb.conf
echo "browseable = yes">>$smbdir/smb.conf
echo "guest ok = yes">>$smbdir/smb.conf
echo "writable = yes">>$smbdir/smb.conf
echo "create mask = 0600">>$smbdir/smb.conf
echo "directory mask = 0700">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
MASTER () {
echo "local master = yes">>$smbdir/smb.conf
echo "domain master = yes">>$smbdir/smb.conf
echo "preferred master = yes">>$smbdir/smb.conf
echo "domain logons = yes">>$smbdir/smb.conf
echo "logon script = %m.bat">>$smbdir/smb.conf
echo "dns proxy = no">>$smbdir/smb.conf
echo "guest account = guest">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
PASSWORDSYNC () {
echo "unix password sync = yes">>$smbdir/smb.conf
echo "passwd program = /usr/bin/passwd %u">>$smbdir/smb.conf
echo "passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*">>$smbdir/smb.conf
echo "smb passwd file = $smbdir/smbpasswd">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
LOGS () {
#logs
echo 'log file = /var/log/samba/log.%m'>>$smbdir/smb.conf
echo 'max log size = 50'>>$smbdir/smb.conf
}
################
################################################################
################################################################
################
SOCKET () {
echo "socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
STRINGANDRESOLVER () {
echo "server string = MySambaServer 0.1 - Samba %v">>$smbdir/smb.conf
echo "name resolve order = lmhosts host wins bcast">>$smbdir/smb.conf
}
################
################################################################
################################################################
################
aplicar () {
cat $smbdir/comp/*.comp>>$smbdir/smb.conf
cat $smbdir/compprint/*.comp>>$smbdir/smb.conf
}
################
################################################################
################################################################
################
MSPERCEBI () {
$DIALOG --yesno "Percebi que você já tinha efetuado uma configuração base do MySamba, e ela pode ser removida! Posso começar uma\nnova configuração base e manter intactos os compartilhamentos. Você pode fazer backup da\nconfiguração atual para recuperá-lo depois. Para isto vá no Menu Principal>Configurar>\ne vá na opção que efetua backups. Quer continuar (Yes) caso já tenha feito um backup, ou sair\nsem fazer nada (No) para ir fazer um backup." 0 0
}
################
################################################################
################################################################
################
MSGLOBALREMOVE () {
$DIALOG --yesno "Percebi que você já tinha efetuado uma configuração base do MySamba, e ela pode ser removida! Posso começar uma\nnova configuração base e manter intactos os compartilhamentos. Você pode fazer backup da\nconfiguração atual para recuperá-lo depois. Para isto vá no Menu Principal>Configurar>\ne vá na opção que efetua backups. Quer continuar (Yes) caso já tenha feito um backup, ou sair\nsem fazer nada (No) para ir fazer um backup." 0 0
}
################
################################################################
################################################################
################
################
################################################################
################################################################
################
#################################################################################################
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### ##### #####
confdozero () {
MENU=`$DIALOG --stdout --no-cancel --title " $SAMBAX " --menu "Interface para configuração do Samba\nEscolha uma das Opções abaixo: " 0 0 0 CONFIGURAR "Configuracoes essenciais" COMPARTILHAR "DIRETÓRIO/IMPRESSORA/CDROM" REMOVER COMPARTILHAMENTO INICIAR SAMBA PARAR SAMBA SOBRE "ESTE PROGRAMA" FIM "Sair do MySamba"`
case $MENU in
SOBRE)
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox "Script com interface baseada no SAMBAX Feito por Eduardo Assisemail: eduardodoctor@bol.com.br e
modificado, ampliado \ne aperfeiçoado por Julian Lennon Gonçalves: julianlinuxer@yahoo.com.br\n\nEsse MegaScript visa dar uma interface simples e explicativa para que usuários com noções básicas de \n
informática e rede consigam montar um servidor Samba de alto poder. Voçê pode até montar ao mesmo tempo\num servidor de arquivos, de impressão, e de PDC
(autenticação de usuários). Esse é um programa inteligente\ne de automatização máxima, sendo que é até possível fazer backups de configuração que pode ser
facilmente\nexportado para outro servidor com o MySamba instalado. Você pode até ganhar um trocado sendo que montar um\nservidor desse não é barato.\n Seja bem
vindo ao futuro, seja bem vindo a liberdade tecnológica." 20 100`
confdozero
;;
CONFIGURAR)
GLOBALCOMUM () {
$DIALOG --title "Wizard" --yesno "Este Wizard lhe guiará para fazer uma configuração comum do MySamba,\n onde você pode apenas compartilhar arquivos e impressoras. Tome cuidado\n com as palavras que forem pedidas para serem digitadas, pois faz difrença\nse você digita um nome como \ncarlos\nde um nome\nCarlos\nPor tanto, atenção!\nTambém não cancele a configuração no meio do caminho, pois a configuração já \nfeita não servirá de nada.\n\nEscolha Yes para seguir ou No para sair:" 0 0
if [ $? == 0 ];
then
echo ' #GCOMUM'>$smbdir/smb.conf
echo "[global]">>$smbdir/smb.conf
GGRUPO
sleep 1
HOST
sleep 1
STRINGANDRESOLVER
sleep 1
WINSRESOLVER
sleep 1
PLACAS
sleep 1
SEGURANCA
sleep 1
CRIPTO
sleep 1
PASSWORDSYNC
sleep 1
LOGS
sleep 1
SOCKET
sleep 1
TIPODEIMPRESSAO
sleep 1
NIVEL
sleep 1
DATACLOCKSERVER
sleep 1
COISA="MySamba Server"
FILEIPDIR="$smbdir/smb.conf"
IPS
sleep 1
HOMES
sleep 1
PRINTERGLOBAL
sleep 1
FINAL
sleep 1
#Lembra-se do if lááááá em cima dopois do início da função GLOBALCOMUM
else
$DIALOG --msgbox "Como você cancelou, não adianta ter um arquivo de configuração\n$smbdir/smb.conf vazio." 0 0
fi
}
GLOBALPDC () {
$DIALOG --title "Wizard" --yesno "Este Wizard lhe guiará para fazer uma configuração do MySamba como servidor PDC, onde você pode\n compartilhar arquivos e impressoras, além de autenticar o login dos clientes. Cuidado com letras\nmaiúsculas e minúsculas, pois faz difrença se você digita um nome como \n\ncarlos\n\nde um nome como\n\nCarlos\n\nPor tanto, atenção!\nTambém não cancele a configuração no meio do caminho, pois a configuração já feita não servirá de nada.\n\nEscolha Yes para seguir ou No para sair:" 0 0
if [ $? == 0 ];
then
echo ' #GPDC'>$smbdir/smb.conf
echo "[global]">>$smbdir/smb.conf
GGRUPO
sleep 1
HOST
sleep 1
WINSRESOLVER
sleep 1
PLACAS
sleep 1
SEGURANCA
sleep 1
CRIPTO
sleep 1
PASSWORDSYNC
sleep 1
LOGS
sleep 1
SOCKET
sleep 1
TIPODEIMPRESSAO
sleep 1
NIVEL
echo "guest account = guest">>$smbdir/smb.conf
sleep 1
MASTER
sleep 1
DATACLOCKSERVER
sleep 1
COISA="MySamba Server"
FILEIPDIR="$smbdir/smb.conf"
IPS
sleep 1
HOMES
sleep 1
NETLOGON
PRINTERGLOBAL
sleep 1
FINAL
sleep 1
else
#IF lé no começo do GLOBALPDC
$DIALOG --msgbox "Como você cancelou, não adianta ter um arquivo de configuração
$smbdir/smb.conf vazio." 0 0
fi
}
INTERFACE () {
#CCCCCCCCCCCCCCCConfigurarinterfaceEEEEEEEEEEEEEEEEEE
CONF=$($DIALOG --stdout --no-cancel --title "Configurações e tarefas" --menu "Este menu é onde você faz as principais configurações do $SAMBAX. As opções ConfigBásico ou ConfigPDC são os principais ítens para fazer uma configuração \nbase para o funcionamento do $SAMBAX. Tentar fazer qualquer outra coisa sem setar os parâmetros para um deles é inútil. A opção ConfgBásico é para montar um servidor simples de compartilhamento de arquivos, impressoras e Wins. A opção ConfigPDC é mais completa, pois além das opções do ConfigBásico, ele transforma seu computador em um Server PDC (auteticação de usuários), onde você tem um maior controle e segurança na sua rede. Escolha uma das opções abaixo para realizar uma tarefa." 0 0 0 ConfigBasico "Servidor de diretórios e impressoras." ConfigPDC "Servidor de diretórios, impressoras e PDC." User "Adicionar ou remover usuários. (É preciso para o PDC)." Maquinas "Adicionar ou remover máquinas. (É essencial para o PDC)." Groups "Criar ou remover grupos" ExportMyConfig "Exportar configuração do MySamba para outro servidor MySamba" ImportMyConfig "Importar configuração do MySamba de outro servidor MySamba" ImprimirConfig "Imprime o arquivo de configuração do MySamba na impressora" Voltar "Volta ao Menu principal")
case $CONF in
ConfigBasico)
OLHANDO=`grep '^#MySamba$' $smbdir/smb.conf`
case $OLHANDO in
'#MySamba')
MSPERCEBI
if [ $? == 0 ]
then
GLOBALCOMUM
aplicar
sleep 1
$DIALOG --msgbox "Pronto." 0 0
else
echo "Cancelado..."
sleep 1
fi
;;
*)
MSGLOBALREMOVE
if [ $? == 0 ]; then
GLOBALCOMUM
aplicar
sleep 1
fi
;;
esac
INTERFACE
;;
ConfigPDC)
OLHANDO=`grep '^#MySamba$' $smbdir/smb.conf`
case $OLHANDO in
'#MySamba')
MSPERCEBI
if [ $? == 0 ]
then
GLOBALPDC
aplicar
$DIALOG --msgbox "Pronto." 0 0
sleep 1
else
echo "Cancelado..."
sleep 1
fi
;;
*)
MSGLOBALREMOVE
if [ $? == 0 ]; then
GLOBALPDC
aplicar
fi
;;
esac
INTERFACE
;;
Maquinas)
OP=$($DIALOG --stdout --no-cancel --title "Máquinas" --menu "Escolha uma opção abaixo." 0 0 0 Adicionar "Adicionar uma máquina de sua rede." Remover "Retirar uma máquina da rede do acesso." Sair "Sai sem fazer nada.")
case $OP in
Sair)
INTERFACE
;;
Adicionar)
# máquinas
MACHINE () {
MICRO=$($DIALOG --title "Adicionar máquina da rede" --stdout --inputbox "Digite o nome da máquina que você quer adicionar a rede,\nisso é necessário se você vai fazer um servidor PDC com o MySamba. Digite apenas com letras minúsculas, se não falhará.\n" 0 0)
G=$($DIALOG --title "Adicionar máquina da rede" --stdout --inputbox "Digite o nome do grupo que a máquina faz parte." 0 0)
#A adição de máquinas deve estar errada, por favor, sugestões
useradd -g 100 -c Máquina_cliente -d /dev/null -s /bin/false $MICRO$
sleep 4
smbpasswd -a -m $MICRO
sleep 5
$DIALOG --yesno "Você quer adicionar outra máquina (Yes) ou sair (No)?" 0 0
if [ $? == 0 ]
then
MACHINE
fi
INTERFACE
}
MACHINE
;;
Remover)
RM=$($DIALOG --title "Remover máquina da rede" --stdout --inputbox "Digite o nome da máquina que será excluída." 0 0)
userdel $RM
sleep 1
$DIALOG --msgbox "Máquina $RM removida." 0 0
;;
esac
INTERFACE
;;
User)
OPU=$($DIALOG --stdout --no-cancel --title "Usuários" --menu "Escolha uma opção abaixo." 10 60 4 Adicionar "Adicionar um usuário de sua rede." Remover "Retirar um usuário da rede do acesso." Sair "Sai sem fazer nada.")
case $OPU in
Voltar)
INTERFACE
;;
Adicionar)
NEWUSER=$($DIALOG --title "Adicionar usuário das máquinas da rede." --stdout --inputbox "Digite o nome do usuário a ser adicionado." 0 0)
GRUP=$($DIALOG --title "Adicionar usuário das máquinas da rede." --stdout --inputbox "Digite o nome do grupo que o usuário fará parte." 0 0)
PASSWORD=`$DIALOG --stdout --title " Cadastro de Usuários " --passwordbox " Favor digitar a senha do Usuário ( $NEWUSER ): " 10 45`
useradd -g $GRUP -d /home/${NEWUSER} -c "Usuário criado no MySamba" -m -s /bin/bash ${NEWUSER} |echo ${NEWUSER}:${PASSWORD} |chpasswd
$DIALOG --title "Adicionar usuário das máquinas da rede." --msgbox "\n
............................................\n
.Usuário adicionado......: $NEWUSER\n
.Grupo do usuário........: $GRUP\n
.Diretório Home..........: /home/$NEWUSER\n
............................................\n" 0 0
;;
Remover)
RMU=$($DIALOG --title "Remover máquina da rede" --stdout --inputbox "Digite o nome da máquina que será excluída." 0 0)
userdel $RMU
sleep 1
$DIALOG --msgbox "O usuário $RMU foi removido." 0 0
;;
esac
INTERFACE
;;
ExportMyConfig)
$DIALOG --title "Exportar configuração" --yesno "Coloque o disquete onde será colocada a cópia das configurações de MySamba Server.\nDevo destacar que em outro Linux que esta configuração for importada, os usuários \nterão de ser recriados, se você os criou neste sistema Linux.\nCuidado, todos os dados do seu disquete serão excluídos." 0 0
if [ $? == 0 ]
then
$DIALOG --title "Aguarde..." --infobox "Fomatando disquete, com FileSystem FAT 12." 0 0 &
fdformat /dev/fd0u1440
mkdosfs /dev/fd0u1440
$DIALOG --title "Aguarde..." --infobox "Exportando configuração." 0 0 &
sleep 1
mount /mnt/floppy
tar -c $smbdir>/mnt/floppy/mybackup.tar
umount /mnt/floppy
$DIALOG --msgbox "Seu disco está pronto. Ele também serve como disco de recuperação." 0 0
else
$DIALOG --msgbox "Cancelado." 0 0
fi
INTERFACE
;;
ImportMyConfig)
$DIALOG --title "Importar configuração" --yesno "Coloque o disquete onde será importada a cópia das configurações de MySamba Server.\nCuidado, as configurações atuais do Samba poderão ser sobrescritas!!!. \nExporte a configuração atual para um disquete por precaução!." 0 0
if [ $? == 0 ]
then
$DIALOG --title "Wait" --infobox "Recuperando..." 0 0 &
mount /mnt/floppy
sleep 2
$DIALOG --title "Resultados do TAR..." --msgbox "`tar -xvf /mnt/floppy/mybackup.tar -C / `" 0 0
sleep 1
umount /mnt/floppy
$DIALOG --msgbox "Esta recuperação da configuração foi efetuada." 0 0
else
$DIALOG --msgbox "Cancelado." 0 0
fi
INTERFACE
;;
Groups)
#grupos
OPG=$($DIALOG --stdout --no-cancel --title "Grupos." --menu "Escolha uma opção abaixo." 10 60 4 Adicionar "Adicionar um Grupo de sua rede." Remover " Retirar um Grupo da rede do acesso." Sair "Sai sem fazer nada.")
case $OPG in
Sair)
INTERFACE
;;
Adicionar)
NEWG=$($DIALOG --title "Adicionar Grupo das máquinas da rede." --stdout --inputbox "Digite o nome do Grupo a ser adicionado." 0 0)
groupadd $NEWG
;;
Remover)
RMG=$($DIALOG --title "Remover Grupo da rede" --stdout --inputbox "Digite o nome do Grupo que será excluído." 0 0)
groupdel $RMG
sleep 1
$DIALOG --msgbox "O Grupo $RMG foi removido." 0 0
;;
esac
INTERFACE
;;
ImprimirConfig)
$DIALOG --infobox "imprimindo o arquivo de configuração do MySamba." 0 0
cat -n $smbdir/smb.conf>/dev/lp0
sleep 2
$DIALOG --msgbox "Feito. Não sei se saiu." 0 0
sleep 1
INTERFACE
;;
Voltar)
confdozero
;;
esac
#CCCCCCCCCCCCCCCCCCCCCCCCCCCCCConfigurarinterfaceEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
}
INTERFACE
;;
COMPARTILHAR)
# COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_
# COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_
TESTAR=`grep '^#MySamba$' $smbdir/smb.conf`
case $TESTAR in
'#MySamba')
PERGUNTA=$($DIALOG --stdout --title "Compartilhar" --menu "Selecione o que você quer compartilhar ou escolha (Voltar) para voltar ao menu principal." 0 0 0 Diretório "Compartilhar um diretório." Impressora "Compartilhar a impressora instalada neste Linux." Cdrom "Opções para compartilhar Cdrom." Voltar "ao menu principal.")
case $PERGUNTA in
Cdrom)
CD=$($DIALOG --stdout --title "CDROM" --menu "Selecione uma opção abaixo. Lembro que este compartilhamento é o mesmo de um diretório, sendo que para remover o compartilhamento siga a mesma rotina." 0 0 0 Compartilhar "Dá ao $SAMBAX suporte a este tipo de compartilhamento." Carregar "Coloque um CD na bandeja para carregá-lo aqui." Descarregar "Para o compartilhamento do CD (sem removê-lo)." Ejetar "Colocar o CD pra fora." Voltar "ao menu principal.")
case $CD in
Compartilhar)
$DIALOG --title "Limite." --yesno "Você quer limitar o acesso deste diretório a uma determinada faixa de IPS (yes) ou deixar o acesso como definido na configuração Geral(no) (ConfigBasico ou PDC feito anteriormente.)." 0 0
if [ $? == 0 ]; then
IPACESS4=$($DIALOG --title "IPs Livres" --stdout --inputbox "Aqui você pode dizer que IPs ou faixa de IPs TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de \nIPs como:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Veja um exemplo onde tem acesso \npara as máquinas da faixa de IP 10.0 e 192.168.2\n\n10.0. 192.168.2.\nLembrando que \nse você não digitar nada, todas as máquinas terão acesso.\n\nAgora digite os endereços,\nse quizer:" 0 0)
sleep 1
NOIPACESS4=$($DIALOG --title "Limite." --stdout --inputbox "Aqui você vai dizer que IPs ou faixa de IPs NÃO TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de IPs\ncomo:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Ex:\n\n10.0.4.3 10.0.2. 192.168.4.\nVocê pode deixar em branco que não interfere em nada. Atenção, se você digitar um IP de \numa máquina que tem acesso na opção anterior e colocar por acidente seu IP aqui, ou a faixa \nde IP ao qual ele está subordinado, ele continuará tendo acesso, pois a opção anterior prevalece.\n\nAgora digite os endereços, se quizer:" 0 0)
else
IPACESS4=""
NOIPACESS4=""
fi
nome_comp="CDROM"
echo "[$nome_comp]" >$smbdir/comp/$nome_comp.comp
echo 'available = yes' >> $smbdir/comp/$nome_comp.comp
echo "browseable = yes" >> $smbdir/comp/$nome_comp.comp
echo "path = /mnt/cdrom" >> $smbdir/comp/$nome_comp.comp
echo 'guest only = yes' >> $smbdir/comp/$nome_comp.comp
echo "hosts allow = $IPACESS4">> $smbdir/comp/$nome_comp.comp
echo "hosts deny = $NOIPACESS4">> $smbdir/comp/$nome_comp.comp
echo "writable = no" >> $smbdir/comp/$nome_comp.comp
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox "
Configuração concluida com sucesso !\n\n
_____________________________________________\n
|Nome do Compartilhamento....................:| -> ($nome_comp)\n
|_____________________________________________|" 0 0`
;;
Carregar)
$DIALOG --title "Ok" --msgbox "Coloque um cdrom na bandeja para carregá-lo." 0 0
umount /mnt/cdrom
sudo mount /mnt/cdrom
mount /mnt/cdrom
sudo mount /mnt/cdrom
$DIALOG --title "Ok" --msgbox "Cdrom carregado no compartilhamento." 0 0
;;
Descarregar)
sudo umount /mnt/cdrom
umount /mnt/cdrom
$DIALOG --title "Ok" --msgbox "Cdrom descarregado no compartilhamento." 0 0
;;
Ejetar)
umount /mnt/cdrom
eject
;;
Voltar)
confdozero
;;
esac
;;
Diretório)
#Os WHILE-DO-DONE abaixo sao interessantes, mais quando tentamos compartilhar outra vez dentro do
#MySamba eles causam problemas por problemas de repeticao das variaveis ja definidas
#depois de um comartilhamento, nao tive tempode consertar isto, sugetoes no endereco láá abaixo
# while [ ! $nome_comp ]
# do
nome_comp=$($DIALOG --stdout --no-cancel --title " $SAMBAX " --inputbox "Favor Digitar o Nome do Compartilhamento:\nEx: Arquivos do departamento " 10 45)
# done
# while [ ! $caminho_comp ]
# do
caminho_comp=$($DIALOG --stdout --no-cancel --title " $SAMBAX " --inputbox "Favor Digitar o Caminho do Compartilhamento:\nEx: /home/$nome_comp " 0 0 )
# done
if [ -d $caminho_comp ]
then
echo "existe."
else
$DIALOG --title " $SAMBAX " --yesno " O caminho ($caminho_comp) que você digitou não existe\nDeseja criar a pasta agora ? " 0 0
if [ $? == 0 ]
then
mkdir $caminho_comp
fi
fi
sleep 1
N1=$($DIALOG --title "Permissões" --stdout --menu "O dono do diretório (quem o criou) terá que permissões sobre ele?" 0 0 0 Somente_Leitura "O dono do diretório na rede so pode o ler." Leitura_e_escrita "O dono pode ler e escrever (menos seguro)" Acesso_Total "O dono pode fazer o que quiser sobre o diretorio (perigoso)")
case $N1 in
Somente_Leitura)
NUM1=4
;;
Leitura_e_escrita)
NUM1=6
;;
Acesso_Total)
NUM1=7
;;
esac
N2=$($DIALOG --title "Permissões" --stdout --menu "O grupo do diretório (ao qual o dono faz parte) terá que permissões sobre ele?" 0 0 0 Somente_Leitura "O dono do diretório na rede so pode o ler." Leitura_e_escrita "O dono pode ler e escrever (menos seguro)" Acesso_Total "O dono pode fazer o que quiser sobre o diretorio (perigoso)")
case $N2 in
Somente_Leitura)
NUM2=4
;;
Leitura_e_escrita)
NUM2=6
;;
Acesso_Total)
NUM2=7
;;
esac
N3=$($DIALOG --title "Permissões" --stdout --menu "Os outros usuários (Ex: Os usuários anônimos da rede) terá que permissões sobre ele?" 0 0 0 Somente_Leitura "O dono do diretório na rede so pode o ler." Leitura_e_escrita "O dono pode ler e escrever (menos seguro)" Acesso_Total "O dono pode fazer o que quiser sobre o diretorio (perigoso)")
case $N3 in
Somente_Leitura)
NUM3=4
;;
Leitura_e_escrita)
NUM3=6
;;
Acesso_Total)
NUM3=7
;;
esac
#//////////////////////////////////#
chmod $NUM1$NUM2$NUM3 $caminho_comp
#//////////////////////////////////#
$DIALOG --title "Permissão geral." --yesno "Na configuração geral deste compartilhamento, ele terá permissão de leitura e escrita(yes) ou terá permissão de somente leitura(no). As perguntas de permissão anteriores eram as permissões para a criação (do diretório). Agora esta pergunta é para o compartilhamento geral." 0 0
if [ $? == 0 ]; then
PERM=yes
PERM2="Sim, podem ler e escrever"
else
PERM=no
PERM2="Não, só podem ler"
fi
$DIALOG --title "Limite." --yesno "Você quer limitar o acesso deste diretório a uma determinada faixa de IPS (yes) ou deixar o acesso como definido na configuração Geral(no) (ConfigBasico ou PDC feito anteriormente.)." 0 0
if [ $? == 0 ]; then
IPACESS2=$($DIALOG --title "IPs Livres" --stdout --inputbox "Aqui você pode dizer que IPs ou faixa de IPs TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de \nIPs como:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Veja um exemplo onde tem acesso \npara as máquinas da faixa de IP 10.0 e 192.168.2\n\n10.0. 192.168.2.\nLembrando que \nse você não digitar nada, todas as máquinas terão acesso.\n\nAgora digite os endereços,\nse quizer:" 0 0)
sleep 1
NOIPACESS2=$($DIALOG --title "Limite." --stdout --inputbox "Aqui você vai dizer que IPs ou faixa de IPs NÃO TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de IPs\ncomo:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Ex:\n\n10.0.4.3 10.0.2. 192.168.4.\nVocê pode deixar em branco que não interfere em nada. Atenção, se você digitar um IP de \numa máquina que tem acesso na opção anterior e colocar por acidente seu IP aqui, ou a faixa \nde IP ao qual ele está subordinado, ele continuará tendo acesso, pois a opção anterior prevalece.\n\nAgora digite os endereços, se quizer:" 0 0)
else
IPACESS2=""
NOIPACESS2=""
fi
$DIALOG --title "$SAMBAX" --yesno "O compartilhamento aparecerá entre os outros (yes) ou será oculto (no)?" 0 0
if [ $? == 0 ]; then
RESPO='yes'
RESPO2="Não será oculto"
else
RESPO=no
RESPO2="Sim, será oculto"
fi
if [ -d $smbdir/comp ]
then
sleep 1
else
mkdir $smbdir/comp
fi
sleep 1
echo "[$nome_comp]" >>$smbdir/comp/$nome_comp.comp
echo 'available = yes' >> $smbdir/comp/$nome_comp.comp
echo "browseable = $RESPO" >> $smbdir/comp/$nome_comp.comp
echo "path = $caminho_comp" >> $smbdir/comp/$nome_comp.comp
echo 'guest only = yes' >> $smbdir/comp/$nome_comp.comp
echo "hosts allow = $IPACESS2">> $smbdir/comp/$nome_comp.comp
echo "hosts deny = $NOIPACESS2">> $smbdir/comp/$nome_comp.comp
echo "writable = $PERM" >> $smbdir/comp/$nome_comp.comp
rm -rf $smbdir/smb.conf
touch $smbdir/smb.conf
cat $smbdir/GLOBAL>$smbdir/smb.conf
cat $smbdir/comp/*.comp>>$smbdir/smb.conf
cat $smbdir/compprint/*.comp>>$smbdir/smb.conf
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox "
Configuração concluida com sucesso !\n\n
_____________________________________________\n
|Nome do Compartilhamento....................:| -> ($nome_comp)\n
|Caminho do Compartilhamento.................:| -> ($caminho_comp)\n
|Para o dono do diretorio....................:| -> ($N1)\n
|Para o grupo................................:| -> ($N2)\n
|Para os outros..............................:| -> ($N3)\n
|Permissoes (da pasta).......................:| -> ($NUM1$NUM2$NUM3)\n
|(Compartilhamento) com permissao de escrita.:| -> ($PERM2)\n
|O Compartilhamento sera oculto..............:| -> ($RESPO2)\n
|_____________________________________________|" 0 0`
;;
#Esse diretório será usado em outras versões para adicionar vários compartilhamentos de impressoras (incluindo as que estiver em #máquinas Windows, mais Quando eu aprender. hhehe. Quem domina o Samba, Mande dicas.
Impressora)
if [ ! -d $smbdir/compprint ]; then
mkdir $smbdir/compprint
fi
NAMEIMPRESS=$($DIALOG --stdout --title "Compartilhar Impressoras" --inputbox "Digite o nome do compartilhamento de impressora." 0 0)
COMENTIMPRESS=$($DIALOG --stdout --title "Compartilhar Impressoras" --inputbox "Digite o comentário que aparecerá sobreo o compartilhamento." 0 0)
NAMEPRINT=$($DIALOG --stdout --title "Compartilhar Impressoras" --inputbox "Digite o nome da impressora. Ex:\nHP\nLexmark\netc..." 0 0)
$DIALOG --title "Limite." --yesno "Você quer limitar o acesso deste compartilhamento a uma determinada faixa de IPS (yes) ou deixar o acesso como definido na configuração Geral(no) (ConfigBasico ou PDC feito anteriormente.)." 0 0
if [ $? == 0 ]; then
IPACESS3=$($DIALOG --title "IPs Livres" --stdout --inputbox "Aqui você pode dizer que IPs ou faixa de IPs TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de \nIPs como:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Veja um exemplo onde tem acesso \npara as máquinas da faixa de IP 10.0 e 192.168.2\n\n10.0. 192.168.2.\nLembrando que \nse você não digitar nada, todas as máquinas terão acesso.\n\nAgora digite os endereços,\nse quizer:" 0 0)
sleep 1
NOIPACESS3=$($DIALOG --title "Limite." --stdout --inputbox "Aqui você vai dizer que IPs ou faixa de IPs NÃO TERÃO acesso ao compartilhamento.\nVocê pode digitar IPs específicos como:\n10.0.1.2 ou 192.168.3.1 \n\nOu faixas de IPs\ncomo:\n10.0.0. ou 192.168.\nnas faixas de IPs sempre coloque um ponto no final.\nDigite cada IP e faixas de IP separados por um espaço. Ex:\n\n10.0.4.3 10.0.2. 192.168.4.\nVocê pode deixar em branco que não interfere em nada. Atenção, se você digitar um IP de \numa máquina que tem acesso na opção anterior e colocar por acidente seu IP aqui, ou a faixa \nde IP ao qual ele está subordinado, ele continuará tendo acesso, pois a opção anterior prevalece.\n\nAgora digite os endereços, se quizer:" 0 0)
else
IPACESS3=""
NOIPACESS3=""
fi
nome_comp="impressora"
echo "[$NAMEIMPRESS]"> $smbdir/compprint/$nome_comp.comp
echo "comment = $COMENTIMPRESS">> $smbdir/compprint/$nome_comp.comp
echo "path = /var/spool/samba">> $smbdir/compprint/$nome_comp.comp
echo "read only = no">> $smbdir/compprint/$nome_comp.comp
echo "create mask = 0700">> $smbdir/compprint/$nome_comp.comp
echo "guest ok = yes">> $smbdir/compprint/$nome_comp.comp
echo "printable = yes">> $smbdir/compprint/$nome_comp.comp
echo "print command = lpr-cups -P %p -o raw %s -r # using client side printer drivers.">> $smbdir/compprint/$nome_comp.comp
echo "lpq command = lpstat -o %p">> $smbdir/compprint/$nome_comp.comp
echo "lprm command = cancel %p-%j">> $smbdir/compprint/$nome_comp.comp
echo "printer name = $NAMEPRINT">> $smbdir/compprint/$nome_comp.comp
echo "oplocks = no">> $smbdir/compprint/$nome_comp.comp
echo "hosts allow = $IPACESS3">> $smbdir/compprint/$nome_comp.comp
echo "hosts deny = $NOIPACESS3">> $smbdir/compprint/$nome_comp.comp
echo "share modes = no">> $smbdir/compprint/$nome_comp.comp
rm -rf $smbdir/smb.conf
touch $smbdir/smb.conf
cat $smbdir/GLOBAL>$smbdir/smb.conf
cat $smbdir/comp/*.comp>>$smbdir/smb.conf
cat $smbdir/compprint/*.comp>>$smbdir/smb.conf
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox "
Configuração concluida com sucesso !\n\n
_____________________________________________\n
|Nome do Compartilhamento....................:| -> ($NAMEIMPRESS)\n
|Comentário do compartilhamento..............:| -> ($COMENTIMPRESS)\n
|Nome de impressora..........................:| -> ($NAMEPRINT)\n
|_____________________________________________|" 0 0`
;;
Voltar)
confdozero
;;
esac
;;
*)
$DIALOG --title "Descupe!" --msgbox "Sinto muito, mais você não pode
compartilhar nada sem ter configurado como o MySamba vai funcionar. Para
configurá-lo, vá no menu principal e entre em (CONFIGURAR) e depois em
(ConfigBásico ou ConfigPDC)." 0 0
;;
esac
# COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_
# COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_COMPARTILHAR_
confdozero
;;
REMOVER)
#Parâmetros para uma seleção de arquivo. Sei que podia usar
#dialog --fselect "/diretorio/" 0 0
#Só que é menos seguro, pois o usuário pode deletar outros arquivos
##############################
DECID=$($DIALOG --stdout --title "Escolha." --menu "Escolha que compartilhamento quer remover." 0 0 0 Diretório "Diretório ou Cdrom." Impressora "Remover impressora do compartilhamento." Voltar "ao menu principal.")
sleep 3
echo $DIALOG>/tmp/dialogo
case $DECID in
Diretório)
##############################
echo '#!/bin/sh'>/tmp/VIEW
echo 'DIALOG=`cat /tmp/dialogo`'>/tmp/VIEW
echo '$DIALOG --stdout --menu "Selecione o compartilhamento a ser removido." 0 0 0 `cat /tmp/files`>/tmp/escolha'>>/tmp/VIEW
sleep 3
echo "">/tmp/files
sleep 3
i=0
for name in `ls $smbdir/comp/`;
do
i=$(expr $i + 1)
echo "$name item$i">>/tmp/files
done
chmod 777 /tmp/VIEW
sleep 3
/tmp/VIEW
if [ $? != 0 ];
then
confdozero
fi
sleep 3
COMP=$(cat /tmp/escolha)
sleep 3
##############################
$DIALOG --title " $SAMBAX " --yesno " Tem certeza que quer remover o compartilhamento $COMP? " 0 0
if [ $? == 0 ];
then
rm $smbdir/comp/$COMP
rm -rf $smbdir/smb.conf.YOUBACKUP
cp -Rp $smbdir/smb.conf $smbdir/smb.conf.YOUBACKUP
rm -rf $smbdir/smb.conf
touch $smbdir/smb.conf
sleep 1
cat $smbdir/GLOBAL>$smbdir/smb.conf
cat $smbdir/comp/*.comp>>$smbdir/smb.conf
$DIALOG --title "OBS:" --msgbox "Voce removeu o compartilhamento $COMP mas a pasta onde estao os\narquivos ainda continua existindo pois eu nao o removo." 0 0
$DIALOG --title "OK" --beep-after --msgbox "Compartilhamento $COMP removido. Va ao menu principal e clique em RECARREGAR para reiniciar o servicos para as novas configuracoes valerem." 0 0
fi
confdozero
;;
Impressora)
##############################
echo '#!/bin/sh'>/tmp/VIEW
echo 'dialog --stdout --menu "Selecione o compartilhamento a ser removido." 0 0 0 `cat /tmp/files`>/tmp/escolha'>>/tmp/VIEW
echo "">/tmp/files
i=0
for name in `ls $smbdir/compprint/`;
do
i=$(expr $i + 1)
echo "$name item$i">>/tmp/files
done
chmod 777 /tmp/VIEW
/tmp/VIEW
if [ $? != 0 ];
then
confdozero
fi
COMP=$(cat /tmp/escolha)
##############################
$DIALOG --title " $SAMBAX " --yesno " Tem certeza que quer remover o compartilhamento $COMP? " 0 0
if [ $? == 0 ];
then
rm $smbdir/compprint/$COMP
rm -rf $smbdir/smb.conf
touch $smbdir/smb.conf
sleep 1
cat $smbdir/GLOBAL>$smbdir/smb.conf
cat $smbdir/comp/*.comp>>$smbdir/smb.conf
cat $smbdir/compprint/*.comp>>$smbdir/smb.conf
$DIALOG --title "OBS:" --msgbox "Voce removeu o compartilhamento $COMP." 0 0
$DIALOG --title "OK" --beep-after --msgbox "Compartilhamento $COMP removido. Va ao menu principal e clique em RECARREGAR para reiniciar o serviços para as novas configuracões valerem." 0 0
fi
confdozero
;;
Voltar)
confdozero
;;
esac
;;
INICIAR)
$DIALOG --title " $SAMBAX " --yesno " Deseja que o Samba seja iniciado junto com o Sistema(yes) ou so iniciar agora(no)? " 10 50
if [ $? == 0 ];
then
if [ -f /etc/rc.d/rc.local.nosamba ];
then
$DIALOG --msgbox "Seu Linux ja esta configurado para iniciar o servico que voce esta tentando habilitar de novo." 0 0
else
smbd start
nmbd start
cp -Rp /etc/rc.d/rc.local /etc/rc.d/rc.local.nosamba
echo 'echo "-->Iniciando servidor MySamba."'>> /etc/rc.d/rc.local
echo "smbd start" >> /etc/rc.d/rc.local
echo "nmbd start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
chmod -x /etc/rc.d/rc.local.nosamba
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox " Serviço Iniciado com Sucesso !!! " 10 45`
fi
else
smbd start
nmbd start
`$DIALOG --stdout --no-cancel --title " $SAMBAX " --msgbox " Serviço Iniciado com Sucesso !!! " 10 45`
fi
confdozero
;;
PARAR)
smbd stop
nmbd stop
$DIALOG --title " $SAMBAX " --yesno " Deseja que o Samba também não inicie junto com o sistema? " 0 0
if [ $? == 0 ];
then
if [ -f /etc/rc.d/rc.local.nosamba ];
then
cp -Rp /etc/rc.d/rc.local.nosamba /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
rm -rf /etc/rc.d/rc.local.nosamba
echo " Comando concluido com Sucesso !!! "
else
$DIALOG --msgbox "Voce ja tinha configurado para o seu Linux nao iniciar o servico." 0 0
fi
fi
$DIALOG --title "OK" --msgbox "Serviço foi parado." 0 0
confdozero
;;
FIM)
exit
;;
esac
}
################################################################################
######################################
BACKUP (){
if [ -f $smbdir/smb.conf.old ];
then
$DIALOG --yesno "Analizando, percebi que você já tem um outro arquivo de configuração em\n\n $smbdir/smb.conf.old\n\nVocê quer que coloque outro nome para este backup (Yes) ou sobrescrever o backup já existente (No)?" 0 0
if [ $? == 0 ];
then
NOME=$( $DIALOG --stdout --inputbox "Que nome quer dar ao backup?" 0 0 )
$mydialog --infobox "Fazendo backup da configuração antiga em:\n\n$smbdir/$NOME.old" 7 60
cp -Rp $smbdir/smb.conf $smbdir/$NOME.old
sleep 4
$mydialog --infobox "Removendo a configuração antiga\n\n$smbdir/smb.conf..." 7 60
rm -rf $smbdir/smb.conf
sleep 4
$mydialog --infobox "Criando um novo arquivo de configuração\n para ser preenchido com suas opções:\n\n$smbdir/smb.conf" 7 60
touch $smbdir/smb.conf
sleep 4.5
$mydialog --infobox "Pronto, agora vamos configurar \nseu servidor MySamba do zero..." 7 60
sleep 5
confdozero
else
rm -rf $smbdir/smb.conf.old
cp -Rp $smbdir/smb.conf $smbdir/smb.conf.old
sleep 3
$mydialog --infobox "Removendo a configuração antiga:\n\n$smbdir/smb.conf" 7 60
rm -rf $smbdir/smb.conf
sleep 4
$mydialog --infobox "Criando um novo arquivo de configuração\n para ser preenchido com suas opções:\n\n$smbdir/smb.conf" 7 60
touch $smbdir/smb.conf
sleep 4.5
$mydialog --infobox "Pronto, agora vamos configurar \nseu servidor MySamba do zero..." 7 60
sleep 5
confdozero
fi
else
cp -Rp $smbdir/smb.conf $smbdir/smb.conf.old
sleep 4
$mydialog --infobox "Removendo a configuração antiga\n\n$smbdir/smb.conf..." 7 60
rm -rf $smbdir/smb.conf
sleep 5
$mydialog --infobox "Criando um novo arquivo de configuração\n para ser preenchido com suas opções\n\n$smbdir..." 7 60
touch $smbdir/smb.conf
sleep 5
$mydialog --infobox "Pronto, agora vamos configurar \nseu servidor MySamba do zero..." 7 60
sleep 5
confdozero
fi
}
smbcfg (){
if [ -f $smbdir/smb.conf ]
then
OLHADA=`grep '^#MySamba$' $smbdir/smb.conf`
case $OLHADA in
'#MySamba')
confdozero
;;
*)
$mydialog --title 'INFORMAÇÃO' --yesno "\n\n\nUm arquivo $smbdir/smb.conf de configuração do samba antigo já existe e que\n não foi feito pelo program $SAMBAX, você pode fazer um backup desta configuração\n para você fazer uma configuração totalmente nova do MySamba (do zero). Esta é talvez\n a sua primeira vez na configuração do MySamba, obrigatóriamente faça um backup por que\n o arquivo original será excluído por não ser compatível com o MySamba.\n\n\n\nEscolha Yes para sim (Fazer um backup) ou No para não (Sobrescrever o arquivo sem compromisso)." 0 0
if [ $? == 0 ];
then
BACKUP
else
rm -rf $smbdir/smb.conf
touch $smbdir/smb.conf
confdozero
fi
;;
esac
else
if [ -d $smbdir ]
then
$DIALOG --title "Atenção." --yesno "Encontrei apenas o diretório do samba, mas sem os arquivos de configuração.\n Quer montar assim mesmo um arquivo de configuração do MySamba. Esse arquivo\n pode ser facilmente exportado para outro servidor MySamba." 0 0
if [ $? == 0 ]; then
confdozero
fi
else
$DIALOG --yesno "Não encontrei nem o arquivo de configuração do Samba $smbdir/smb.conf nem seu\n diretório padrão $smbdir (de acordo com o padrão LSB). Talvez o Samba não esteja\n instalado nesta distribuição Linux Kernel `uname -r`. Se desejar mesmo assim construir\n um novo arquivo de configuração (que pode ser exportado para outro servidor com MySamba, \n escolha Yes, ou No para Sair." 0 0
if [ $? == 0 ]
then
mkdir $smbdir
touch $smbdir/smb.conf
confdozero
else
exit 0
fi
echo "Fui!!!"
fi
# touch $smbdir/smb.conf
# confdozero
fi
echo "Fui!!! Sair..."
exit 0
}
INSTALL () {
if [ ! -f $filemysamba ]; then
$DIALOG --title "MySamba INSTALL" --yesno "Percebo que talvez esta é a primeira vez que você roda o MySamba Server neste Linux kernel `uname -r`, posso instalá-lo pra você agora. Ele instala em qualquer sistema operacional Linux, só não garanto que ele vá funcionar com sua distribuição. Este sistema controla o Samba de acordo com o padrão LSB e não ocupa mais do que 60K. Quer instalá-lo (yes) ou rodá-lo sem instalar (no)?" 0 0
if [ $? == 0 ]; then
$DIALOG --title "instaling..." --infobox "Intalando MySamba Server em /usr/local/bin" 0 0
cp -Rp ./mysamba /usr/local/bin/
sleep 1
$DIALOG --title "instaled..." --msgbox "Instalação do mySamba Server Concluída.\nO comando para abrir o MySamba é:\nmysamba\nPressione ENTER para eu abrí-lo agora." 0 0
sleep 1
fi
fi
}
######################################################3
#Inicio real do programa e requisições das funções....
INSTALL
smbcfg
confdozero
#MySamba Server
#Version 0.1
# NOTAS DO AUTOR Julian Lennon G. de S. L.
# Este é um pequeno aplicativo Fronted para o Samba. Não é nada tão grandioso como o Swat, mais quebra
#o galho para computadores UltraLentos que não podem se quer abrir o X (já passei por isto). Esta é a
#primeira versão em lançamento na internet, esta versão não é coisa definitiva, muitas coisas poderão
#mudar, pois esta versão é para ser testada pelos administradores de servidores de rede Linux.
#Quem tiver recursos como uma rede ponto-a-ponto já pode testar este programa. Não posso testá-lo aqui
#por meus recursos serem bem limitados e não tenho mais de um computador em casa. Vejam os erros que o
#Script tem e mandem sugestões de correções para um dos endereeços abaixo. De cara já sei que terei que
#diminuir o código-fonte, pois tem muitas linhas repetidas que podem ser resumidas em função (mais #função!!!!hehehehe) e também alguns errinhos de português. Tenho dúvidas sobre alguns ítens, pois tudo #o que fiz aqui foi todo baseado em pesquisas nos mais variados E-books, livros, revistas e scripts mais #não testei nada na prática pois não trabalho em nenhuma rede nem tenho uma, só tenho tempo para minha #estressante faculdade, (faço automação industrial no CEFET de Juazeiro do Norte - CE).
# Sou novato no mundo Samba e tenho que analizar friamente os métodos de compartilhamento de impressoras.
#Quem puder contribuir (seja com correções no código, com equipamentos usados ou financeiramente) envie
#para o endereço abaixo:
#
#Cidade: Cedro/Pernambuco
#Rua: Francisco Filgueira Sampaio, Número: 347
#email: julianlinuxer@yahoo.com.br
#
#Grato.
Software backup, restore, leitura de logs, com dialog
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS DA MBOX - TODOS OS USUARIOS
Backup do Firebird por data - via rede ou local
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (7)
O programa assinador digital (5)









