¿Cómo obtener información de conexión de un archivo de conexión .ags?

8

Estoy trabajando en un script de Python para administrar los servicios de ArcGIS Server (publicar nuevos servicios, actualizar servicios existentes, eliminar servicios antiguos, etc.) en lotes en múltiples entornos (por ejemplo, desarrollo, prueba y producción) e instancias (2+ por entorno).

Para publicar servicios, puede usar archivos de conexión de ArcPy y AGS, pero para hacer algo más allá de eso (por ejemplo, enumerar servicios existentes, iniciar / detener / eliminar servicios), debe usar la API de REST de administrador de AGS , que usa autenticación basada en token, y para obtener un token , debe enviar el nombre de usuario y la contraseña.

Tener que especificar la URL del servidor, el nombre de usuario y la contraseña cada vez sería tedioso para el usuario, especialmente si están trabajando con más de una instancia de AGS a la vez, como lo hace mi script. Preferiría si pudieran usar sus archivos de conexión AGS preexistentes, que necesitan para publicar independientemente.

¿Hay alguna forma de obtener la información de conexión (por ejemplo, URL del servidor, nombre de usuario, contraseña) desde un .agsarchivo de conexión AGS ( ) mediante programación, idealmente con Python? arcpy.Describelos considera archivos tontos y no puede hacer nada con ellos.

Si no hay forma de hacerlo, supongo que tendré que requerir un paso de configuración adicional para generar y almacenar los tokens localmente durante un período prolongado, ya que sería demasiado engorroso tener que solicitar al usuario credenciales para cada instancia de AGS cada vez. ellos usan el guión.

blah238
fuente

Respuestas:

5

En resumen, no. No hay forma de extraer esa información de un archivo .ags sin un gran esfuerzo y alguna ingeniería inversa seria. Esri lo diseñó de esa manera porque tener un archivo que contuviera el nombre de dominio completo de un servidor, así como las credenciales completas de un usuario con privilegios para acceder a ese servidor, representaría un gran riesgo de seguridad.

Además, el hecho de que un usuario tenga permisos para publicar un servicio no significa que pueda iniciar y detener servicios en el servidor SIG, por lo que su lógica es que solo porque tienen un archivo de conexión de servidor (archivo .ags) deberían poder acceder a los puntos finales REST del administrador e iniciar / detener servicios es un poco defectuoso, a menos que esté malinterpretando su publicación.

MrBubbles
fuente
1
Gracias, más o menos lo que supuse que era el caso. Solo un dolor es todo. Por supuesto, los archivos .ags tendrían que protegerse, al igual que los archivos .sde. Pero al menos realmente puede usar archivos .sde para su propósito previsto. Los archivos AGS parecen ser mucho menos útiles, al menos para fines de secuencias de comandos. Y soy consciente de la diferencia entre las conexiones de editor y administrador, principalmente utilizamos este último.
blah238