Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - oloco

#1
Windows / Re: Proceso MSIEXEC.EXE desconocido
17 Agosto 2011, 15:17 PM
Antes de nada, gracias por responder.
El sistema es un Windows 2003 Server Standard.
Creo que si averiguo donde se guarda dicho fichero podré averiguar su origen.
Usaré las aplicaciones que me indicas.
Mil gracias por todo!
#2
Windows / Proceso MSIEXEC.EXE desconocido
17 Agosto 2011, 14:38 PM
Buenas tardes a tod@s.
Tengo una duda sobre la ejecución de un proceso msiexec.exe que se inicia automáticamente cada vez que inicio mi ordenador.

Me gustaría saber si existe alguna utilidad/truco para poder saber de donde viene ese proceso en particular.
En un principio pensaba que era de un antivirus instalado (algún tipo de actualización o algo parecido), pero después de desinstalarlo por completo, el proceso sigue iniciándose.

Agradecería cualquier tipo de ayuda.
Un saludo, y gracias!!
#3
Efectivamente Leo. Ya funciona todo correctamente.
Ahora, a partir de aquí, ya puedo seguir aumentando funciones al script para darle más funcionalidad, así que no sería extraño que vuelva a pasarme por aquí en busca de tu consejo.
Te agradezco enormemente la paciencia y tiempo gastados conmigo.

P.D Por cierto, podrías recomendarme alguna lectura, algún libro o manual para poder aprender nuevos conocimientos sobre batch?

Un saludo, y gracias por todo!!!
#4
Por supuesto. Este es el fichero temp.txt (en el que se graban los equipos):

szcomputername     
--------------------
H111
H112         

(2 rows affected)


y esto es el código que tengo en el script:
Código (bash) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
set /a contador=0

for /f "tokens=*" %%_ in ('findstr /r ^H.*$ temp.txt') do (
set query[!contador!]=%%_
set /a contador+=1
)
echo No. de valores: !contador!



echo REVISION DE LA SUBRED EN EL CONJUNTO DE CAJAS


for /l %%_ in (0,1,!contador!) do (
ping -n 1 !query[%%_]! > nul 2>&1 && (
echo Maquina !query[%%_]! - online
) || (
echo Maquina !query[%%_]! - offline
)
)
pause

#5
Hola Leo.
Pienso que más o menos me va quedando algo más claro. Lo cierto es que me resulta bastante complejo, pero con ganas de aprender (además en mi trabajo me resultará muy util).
He ejecutado el código que has creado, y funciona correctamente menos en un punto. En este equipo tengo sólo dos clientes (debería reportar dos equipos asociados a este servidor), pero cuando ejecuto la parte del código que realiza el ping a cada uno de los valores del array, tambien lo realiza a un "equipo" cuyo valor es nulo.

Código (bash) [Seleccionar]

Maquina H111            - online
Maquina H112            - offline
Maquina  - offline
Press any key to continue . . .


Me doy cuenta de que ese tercer valor es el que corresponde con !contador! dentro del código.
¿Alguna sugerencia?
Gracias!
#6
Hola de nuevo, Leo!
Verás, después de haber expuesto mi duda seguí investigando. He de decir que el ejemplo expuesto no es real. Con esto quiero decir que los datos obtenidos no son nombres de persona, sinó nombres de equipos (el ejemplo lo puse para tratar de hacerme entender mejor, pero pienso que fue un error).
El equipo con la base de datos al que se hace la consulta es un servidor, y los resultados obtenidos son los equipos que a él se conectan.
Una vez tenemos los datos, necesito hacer operaciones con ellos, como por ejemplo un ping, para obtener su IP y revisar que todos tengan conectividad y la misma máscara de subred... por ejemplo. Todo esto quisiera que se hiciese de forma automatizada, por ese motivo la importancia de tener una forma fácil de acceder a las variables.
Resumiendo: Mi script se conecta mediante psexec al servidor, hace la consulta sql y guarda los resultados a un fichero.
Ahora gracias a tu ayuda, puedo tener un contador que me indica cuantos resultados hay.
Sin embargo, sigo sin ver una forma de poder realizar operaciones con los equipos clientes, dado que su número es variable según el servidor al que se consulte.
Si siempre tuviese 2 clientes, en el script llamaría siempre a dos variables, con lo que se acaba el problema. Pero en mi caso, el script tiene que llamar a x variables:



Código (bash) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
set /a contador=0

rem "familia.txt" es el archivo conteniendo el resultado de la consulta:
rem szfamilyname
rem --------------------
rem HMAR
rem HTERESA
rem HLUZ

rem (3 rows affected)

for /f "tokens=*" %%_ in ('findstr /r ^H.*$ familia.txt') do (
set query[!contador!]=%%_
set /a contador+=1
)
echo No. de valores: !contador!

rem Los valores son guardados en el array "query".
rem Para mostrar los valores del array:
rem Primera posicion:
echo !query[0]!
rem Segunda posicion:
echo !query[1]!
rem Tercera posicion:
echo !query[2]!
rem Y así consecutivamente...
rem Solo estoy mostrando hasta el 3, claro que puede haber muchos mas.
pause

Aqui está mi problema. Si tuviese siempre tres resultados, pondría el código tal cual has expuesto, pero como los resultados pueden ser desde 1 hasta 12, no se muy bien como planteármelo para poder crear una orden de ping (entre otras) por cada uno de ellos.

Ante todo quiero agradecerte toda la ayuda que me estás brindando.
Espero puedas entender lo que intento explicarte, pues soy consciente de que esto no se me da demasiado bien y quizas estoy pasando cosas por alto.

Me mantengo a la espera.

Un abrazo!!

P.D Por cierto, respondiendo a tu pregunta. Este script lo utilizo para mi trabajo, y utilizo cmd pues los equipos a los que nos tenemos que conectar utilizan Windows XP o 2003, tienen unas directivas de seguridad elevadas y no tenemos permiso para utilizar utilidades de terceros.
#7
Vale Leo. Gracias!
#8
Hola a tod@s.
Llevo días dándole vueltas a un problema con un script y he visto este post. Lo he leido enteramente y he visto cosas muy interesantes, pero nada que se asemeje a mi problema:
Utilizo sqlcmd para consultar una tabla llamada familia en una BD SQL, y el resultado lo redirecciono a un fichero de texto llamado familia.txt
este es el formato que me devuelve:

szfamilyname      
--------------------
HMAR          
HTERESA
HLUZ                

(3 rows affected)


(todos los nombres que me interesan empezarán por H)
Con el comando findstr /I "H" familia.txt > contador.txt puedo sacar la información que me importa al fichero contador.txt

Bien. El problema es que hay muchas bases de datos, y cada una de ellas me devuelve un número diferente de valores, aunque todos los nombres empiezan por H también. Por ejemplo, si consulto la misma tabla szfamilyname en otra BBDD, el resultado podría ser:

szfamilyname      
--------------------
HEMILIO            
HRODRIGO
HCARMEN
HLORENA            

(4 rows affected)


Lo que me interesa es poder crear un script de forma tal que cada vez que consulto la tabla en cualquier base de datos, me cree una variable cuyo contenido sea el nombre de cada valor que devuelve. Lo complicado de todo esto, es que el número de valores puede variar en cada BBDD, por lo que seguramente tenga que crear algún tipo de contador que lea las lineas del fichero contador.txt y de alguna forma cree una variable con el nombre que aparece en cada linea (sean cuantas sean las lineas). ´
Estoy seguro de que me he expresado bastante mal, así que voy a tratar de exponerlo de una forma más amena con un ejemplo:

Mi aplicación necesita consultar el libro de familia (la BBDD) para poder acceder a la información del número de hij@s que hay (tabla szfamilyname). Con cada nombre existente en cada lista que dicha tabla me reporte, quiero crear una variable para más tarde poder operar con ella (estaría genial poder llamar a cada variable con el mismo nombre que su propio valor, pero eso es lo de menos)

Hasta el momento no me había encontrado con ningún problema similar (he tenido que utilizar un código sacado de aquí para poder contar el número de lineas que tiene un fichero y después operar con él), pero creo que aquí el kid del problema es cómo hacer para que, independientemente del número de "hij@s" que exista, se cree una variable con su nombre.

Espero entre tod@s podais ayudarme.
Un saludo, y mil gracias por adelantado!!!

P.D por cierto, si pensais que existe otra manera diferente y más sencilla de hacer lo que necesito sin tener que usar ficheros de texto, sentiros en libertad de cambiar mi post a otro sitio.