AprendiNoLinux
(usa Ubuntu)
Enviado em 20/09/2011 - 20:43h
heraldoaranda escreveu:
Boa tarde pessoal, Estou precisando fazer o seguinte: Tenho uma máquina com Squeeze no domínio, gostaria que quando um usuário da rede logasse nesta máquina (no domínio), fosse executado um shell script que fizesse os mapeamentos de rede de forma transparente ao usuário. Atualmente eu tenho um script que faz o mapeamento só que o script solicita a senha do usuário novamente (para poder montar com o comando mount...username=${USER},password=${senha_solicitada_pelo_script}). Existe alguma forma que quando o usuário logar na máquina, de alguma forma o script conhecer a senha que o usuário forneceu no login da máquina?
Desde já agradeço a atenção.
Obrigado a todos.
Estou desconfiado que a solução para o seu problema está aqui:
http://www.vivaolinux.com.br/topico/Shell-Script/passando-parametros?pagina=2&num_por_pagina=12
Mais precisamente neste exemplo de código do @hudyfx
Faça uma adaptação a sua realidade.
#!/bin/bash
# name: Hudson
# e-mai: hudymoreira@gmail.com
# script name: "não faz manteiga" ( pq é a unica coisa que ele nao faz... o resto ele faz tudo rsrsrs)
# esse escript é deicado aos amigos que me ajuradam no site do Vol, são eles:
# AprendiNoLinux, mrk3004, fdmarp
# a ideia do expect foi muito boa... depois dele num trabalho mais rsrsrs obrigado rapaziada...
# segue o script:
function acesso_remoto(){ #função que executa o expect e faz as paradinhas que tem que fazer
expect -c "
set timeout -1
spawn ssh $1
expect {
\"*root@poli08*\"
{
send \" mata_radar \n \"
expect {
\"*root@poli08*\"
{
send \" sleep 5 \n \"
expect {
\"*root@poli08*\"
{
send \" ueyesetid \n \"
expect {
\" to quit\"
{
send \"1\n\"
expect {
\"254\"
{
send \"$2\n\"
expect {
\"to quit\"
{
send \"2\n\"
expect {
\"254\"
{
send \"$3\n\"
expect {
\"to quit\"
{
send \"0\n\"
expect {
\"*root@poli08*\"
{
send \" reboot; exit \n \"
}}}}}}}}}}}}}}}}}}
expect eof"
}
echo "Efetuando acerto das Cameras"
for i in `cat /home/hudson/trabalho/lista_hosts.txt`; do # le o arquivo de hosts e coloca no for...
ping -c1 $i >/dev/null 2>/dev/null
if [ $? -le 0 ]; then # teste se o host funciona
cfgfix=`ssh $i "cat /home/sistema/SistVelFixoV4.2.5_DER/teste.txt" 2>/dev/null` # preenche as variaveis
cfgcam=`ssh $i "ueyesetid -d | tail -3 | grep \"|\" | cut -d\"|\" -f2,4,7"`
if [ ${#cfgfix} -eq 41 -a ${#cfgcam} -eq 63 ]; then # verifica se as variaveis tem oq tem que ter
if [ `echo $cfgcam | cut -d" " -f5` -eq `echo $cfgfix | cut -d" " -f3` ];then # checa a ordem correta
acesso_remoto $i 1 2 # entrada da função 1
else
acesso_remoto $i 2 1 # entrada da função 2
fi
else
echo " dados em $i capturados errados" # saida de erro da ordem
echo -e "[`date '+%d/%m/%Y %H:%M:%S'`] erro $i $cfgfix \n $i $cfgcam" >> acerto_cameras.log
fi
else
echo "[`date '+%d/%m/%Y %H:%M:%S'`] maquina $i descocenctar ou sem acesso" >> maquinas_down.log # saida de erro do ping
fi
done
echo
#eof
Espero que ajude. A sua necessidade é muito similar a que ele teve.