https:\/\/pro.arcgis.com\/en\/pro-app\/tool-reference\/server\/upload-service-definition.htm<\/><\/A>. Coincidentemente hay muchas más opciones para controlar parámetros del servicio. <\/P>Aviso legal: No sé nada sobre python, así que seguro hay todo tipo de ineficiencias aquí, pero funciona. <\/>
<\/>
import<\/> arcpy
import<\/> sys,<\/> string,<\/> os,<\/> calendar,<\/> datetime,<\/> traceback,<\/>smtplib
from<\/> arcpy import<\/> env
from<\/> subprocess import<\/> call
# Configuración del servidor de correo<\/>
service =<\/> "GRSM_SASQUATCH"<\/>
sd_filename =<\/> service +<\/> ".sd"<\/>
try<\/>:<\/>
d =<\/> datetime.<\/>datetime.<\/>now(<\/>)<\/>
log =<\/> open(<\/>"C:\\\PYTHON_LOGS\\LOG."<\/>+<\/>service+<\/>".txt"<\/>,<\/>"a"<\/>)</>
log.(---------------------------- +
)
log.(---------------------------- +
)
log.(Log: + str(d) +
)
log.(
)
# Inicio del proceso...
starttime = datetime.datetime.now()
log.write(Begin process:
)
log.write( Process started at + str(starttime) +
)
log.write(
)
# Configuración del servidor de correo
SERVER = 1.2.34
PORT = 25
FROM = sasquatch@big.foot.com
MAILDOMAIN = '@big.foot.com'
# El Data Steward recibe el correo. Debe ser su dirección... sin @big.foot.com al final
userList=[yeti]
# obtener una lista de nombres de usuario desde la lista de tuplas nombradas devuelta por ListUsers
userNames = [u for u in userList]
# tomar la lista userNames y crear direcciones de correo añadiendo el sufijo apropiado.
emailList = [name + MAILDOMAIN for name in userNames]
TO = emailList
# Obtener fecha para el correo
DATE = d
# Iniciar sesión en portal
arcpy.SignInToPortal('https://www.arcgis.com', 'userid', 'password')
# Establecer nombres de archivos de salida
outdir = r"C:\PRODUCTION\GRSM_SASQUATCH"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
# Eliminar cualquier archivo SD sobrante de ejecuciones previas fallidas
try:
os.remove(sd_filename)
print("Eliminado exitosamente", sd_filename)
except:
print("Error mientras se elimina el archivo "<\/SPAN>,<\/SPAN> sd_filename,<\/SPAN> ", quizás no exista"<\/SPAN>)<\/SPAN>
intentar<\/SPAN>:<\/SPAN>
os.<\/SPAN>remove(<\/SPAN>sddraft_output_filename)<\/SPAN>
imprimir<\/SPAN>(<\/SPAN>"Eliminado con éxito "<\/SPAN>,<\/SPAN> sddraft_output_filename)<\/SPAN>
excepto<\/SPAN>:<\/SPAN>
imprimir<\/SPAN>(<\/SPAN>"Error al eliminar el archivo "<\/SPAN>,<\/SPAN> sddraft_output_filename,<\/SPAN> ", quizás no exista"<\/SPAN>)<\/SPAN>
# Mapa de referencia para publicar<\/SPAN>
aprx =<\/SPAN> arcpy.<\/SPAN>mp.<\/SPAN>ArcGISProject(<\/SPAN>r"C:\PRODUCTION\GRSM_SASQUATCH\GRSM_SASQUATCH.aprx"<\/SPAN>)<\/SPAN>
m =<\/SPAN> aprx.<\/SPAN>listMaps(<\/SPAN>"GRSM_SASQUATCH_LOCATIONS"<\/SPAN>)<\/SPAN>[<\/SPAN>0<\/SPAN>]<\/SPAN>
# Crear FeatureSharingDraft y establecer propiedades del servicio<\/Span>
# https:\/\/pro.arcgis.com\/en\/pro-app\/arcpy\/sharing\/featuresharingdraft-class.htm<\/span>
sharing_draft =<\/span> m.<\/span>getWebLayerSharingDraft(<\/span>"HOSTING_SERVER"<\/span>, "FEATURE"<\/span>, service)<\/span>
sharing_draft.<\/span>summary =<\/span> "Sasquatch Locations"<\/span>
sharing_draft.<\/span>tags =<\/span> "Sasquatch, Fur, Hairy, Big Foot"<\/span>
sharing_draft.<\/span>description =<\/span> "Hide and Seek Champion"<\/span>
sharing_draft.<\/span>credits =<\/span> "Yeti"<\/span>
sharing_draft.<\/span>useLimitations =<\/span> "This is not real"<\/span>
#sharing_draft.portalFolder = "Front Country"<\/span>
sharing_draft.<\/span>overwriteExistingService =<\/span> "true"<\/span>
sharing_draft.<\/span>allowExporting =<\/span> "true"<\/span>
# Crear archivo Service Definition Draft<\/span>
sharing_draft.<\/span>exportToSDDraft(<\/span>sddraft_output_filename)<\/span>
# Preparar Servicio<\/span>
# https:\/\/pro.arcgis.com/en/pro-app/tool-reference/server/stage-service.htm<\/span>
sd_output_filename =<\/span> os.<\/span>path.<\/span>join(outdir, sd_filename)
arcpy.<\/>StageService_server(sddraft_output_filename, sd_output_filename)
< spanclass=\"commenttoken\"># Compartir en portal# https:\/ \/pro.arcgis.com/en/pro-app/tool-reference/server/upload-service-definition.htmimprimir(" Subiendo Definicion de Servicio..." )
arcpy .<\/>UploadServiceDefinition_server (sd_output_filename,
My Hosted Services" ,
"" ,
"" ,
"EXISTING" ,
"existingFolder" ,
"" ,
"OVERRIDE_DEFINITION" ,
"SHARE_ONLINE" ,
"PUBLIC" ,
"SHARE_ORGANIZATION" ,
[ GRSM", Great Smoky Mountains National Park Open Data"] )
< spanclass=\"commenttoken\"> # Limpiar archivos SD intentar : os .<\/>remove (sd_filename ) imprimir ( Eliminado con xito ", sd_filename)excepto:imprimir(Error al eliminar el archivo ", sd_filename, "/, quizs no exista")intentar:os.<\/>remove:<\/SPAN>\n \n # Obtener el objeto traceback<\/SPAN>\n tb =<\/SPAN> sys.<\/SPAN>exc_info(<\/SPAN>)<\/SPAN>[<\/SPAN>2<\/SPAN>]<\/SPAN>\n tbinfo =<\/SPAN> traceback.<\/SPAN>format_tb(<\/SPAN>tb)<\/SPAN>[<\/SPAN>0<\/SPAN>]<\/SPAN>\n # Concatenar la información relacionada con <\/SPAN>\n # el error en una cadena de mensaje<\/SPAN>\n pymsg =<\/SPAN> "ERRORES DE PYTHON:\nInformación del traceback:\n"<\/SPAN> +<\/SPAN> tbinfo +<\/SPAN> "\nInformación del error:\n"<\/SPAN> +<\/SPAN> str(<\/SPAN>sys.<\/SPAN>exc_info(<\/Span>)<\/span>[<\/span>1<\/span>]<\/span>\n msgs =<\/span> "ERRORES DE ArcPy:\n"<\/span> +<\/span> arcpy.<\/span>GetMessages(<\/span>2<\/span>)<\/span> +<\/span> "\n"<\/span>\n# Devolver mensajes de error de python para uso en <\/span>\n# script tool o Python Window<\/span>\n arcpy.<\/span>AddError(<\/span>pymsg)<\/span>\n arcpy.<\/span>AddError(<\/span>msgs)<\/span>\n# Imprimir mensajes de error de Python para uso en <\/span>\n# Python \/ Python Window<\/span>\n log.<\/span>write(<\/span>""<\/span> +<\/span> pymsg +<\/span> "\n"<\/span>)<\/span>\n log.<\/span>write(<\/span>""<\/span> +<\/span> msgs +<\/span> ""<\/span>)<\/span>\n log.<\/span>close(<\/span>)<\/span>\n # Definir mensaje de correo si algo salió mal<\/span>\n SUBJECT =<\/span> "Notificación de actualización fallida de AGOL de "<\/span>+<\/span>service \n MSG =<\/span> "No se actualizó: {} - ID: {} a las "<\/span>+<\/span> str(<\/span>DATE )< 2> + </ 2> </ 2> + pymsg + </ 2> + msgs
print (MSG)
print (emailList)
# Enviar un correo notificando al responsable del archivo exitoso
#MESSAGE = "\ From: %s To: %s Subject: %s %s" % (FROM, ", ".join(TO), SUBJECT, MSG)
MESSAGE = "Subject: %s\n\n%s" % (SUBJECT, MSG)
try:
try:
print("Conectando al servidor...")
server = smtplib.SMTP(SERVER,PORT)
try:
print("Iniciando sesión...")
try:
print("Enviando correo...")
server.sendmail(FROM, TO, MESSAGE)
except Exception as e:
print("Error al enviar correo\n" + e.message)
except Exception as e:
print("Error de autenticación en el servidor: verifique las credenciales \n" + e.message)
except Exception as e:
print("Error al conectar con el servidor: verifique la URL del servidor y el puerto de comunicaciones (25 y 'el predeterminado') \n" + e.message)
print("Salir.")
server.quit()
except Exception as e:
print (e.message)