Python을 사용하여 ArcGIS Server 맵 서비스를 시작하고 중지 하시겠습니까?


10

Python을 사용하여 프로그래밍 방식으로 ArcGIS Server 맵 서비스를 중지하고 시작할 수 있습니까?


이것은 단지 REST 쿼리입니다.
Vince

감사합니다. 그러나 나는 이것을 피하는 방법에 대한 아이디어를 내 .py 스크립트에 로그인과 암호를 작성해야합니다. 예를 들어 .ags 파일을 사용할 수 있습니까?)
Lora

불행하게도; 그들은 .ags파일을 토큰 으로 변환하는 기능을 제공하지 못했을 때 디자인에 큰 구멍을 남겼습니다 . 일반 바닐라 HTTP 이상이 필요하지만 인증서 (PEM 파일)로 연결을 시도 할 수 있습니다.
빈스

답변:


7

ArcGIS 10.0에는 ArcIMS를 유지 관리하기위한 명령 줄과 같은 개별 서비스 의 경우 주요 영역의 핵심을 제공 하는 코드 갤러리 ( AGSSOM ) 에서 다운로드 할 수있는 명령 줄 도구 가 있지만 세부적인 '서비스 별'은 없습니다 'AGS 서비스를 시작 / 중지 / 새로 고침 / 추가 / 제거하기 위해 사용할 수있는 레벨 제어.

에있다 ideas.arcgis.com 더 오토메이션 위치에서 서비스의 제어를 개선하기 위해 요청을 여러 장소.


ArcGIS Ideas에 대한 링크가 끊어졌습니다. 어쨌든이 대답은 10.7로 업데이트 될 수 있습니다.
PolyGeo

12

ArcGIS 10.0을 사용하고 DE Wright가 권장하는 AGSSOM 사용에 관심이있는 사람들을 위해 다음 코드를 정리했습니다. 이렇게하면 필요한 지리 데이터베이스 작업을 수행 할 수있는 모든 서비스가 중지되고 이전에 실행중인 서비스가 다시 시작됩니다.

import os, subprocess

#Get list of currently running map services
stream = os.popen('D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe -list')
mapservices = stream.readlines()
lstStarted = []

for item in mapservices:
    itemSplit = item.split(',')
    if len(itemSplit) > 1:
        if itemSplit[1].find("Started.") > -1:
            lstStarted.append(itemSplit[0])

#Shutdown all map services
subprocess.call(['D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe', '-x', '*all*'])

##...Perfom geodatabase tasks here

#Restart previously running map services
for mapservice in lstStarted:
    subprocess.call(['D:\GIS\Admin\AGSSOMv10.0\AGSSOM.exe', '-s', mapservice])

4

ArcGIS Server 10.3부터는 여러 Python 기반 명령 줄 유틸리티가 ArcGIS 서버와 함께 제공됩니다.

ESRI의 문서 그들은 일반적으로 여기에 설치됩니다

C:\Program Files\ArcGIS\Server\tools\admin

서비스 관리 유틸리티서비스 를 시작, 중지 또는 삭제 하는 데 유용 합니다.

python manageservice.py -u admin -p admin -s http://gisserver.domain.com:6080 -n Beirut/Parcels -o start


3

Jeff Berry가 자신의 답변에 게시 한 것과 같은 맥락에서 AGSSOM 도구를 사용하여 ArcGIS Server 10.0 맵 서비스를 관리하는 작은 기능을 작성했습니다.

제 경우에는 한 번에 하나씩 중지하고 시작하여 이름별로 서비스를 개별적으로 호출합니다.

import subprocess

def manageMapServices(command, svc, svcType):
    PathToAGSSOM = r"C:\Windows\AGSSOMUtils\AGSSOM"
    server = "AGSSOM"
    p = subprocess.Popen(PathToAGSSOM + " " + server + " " + command + " " + svc + " " + svcType)
    p.wait()

그런 다음 -x를 사용하여 중지하고 -s를 사용하여 시작하여 이름으로 서비스를 호출 할 수 있습니다.

manageMapServices("-s", "Folder/Service", "MapServer")

2

ArcGIS 10.7 및 일부 이전 버전의 경우 중지, 시작, 삭제 및 기타 여러 가지 Python 스크립트 세트가 여기에 있습니다. http://www.arcgis.com/home/item.html?id= 12dde73e0e784e47818162b4d41ee340 (완전히 완전한 실행 파일이 필요한 경우이 안에 .exe도 있습니다)

또는 여기 도움으로 다이빙하고 (상자 명령 행, 파이썬 API를, 코드 조각 만점) 여러 옵션에 대해 읽어 https://enterprise.arcgis.com/en/server/latest/administer/linux/scripting-arcgis -server-administration.htm

그러나 이러한 모든 사항은 귀하가 참조한 질문에 다른 답변으로 포함됩니다. AGSSOM은 Server 10.0 이상용으로 작성된 .net 유틸리티입니다. 10.1 이상의 최신 버전이 생성되었지만 서버와 인터페이스하기 위해 무거운 c # / vb 코드가 필요하지 않기 때문에 인기를 얻지 못했습니다. Server 10.1+는 잘 구조화 된 REST API와 함께 출시되어 Python과 같은 고급 언어를 사용할 수있게되었으며 많은 agssom.exe 유틸리티를 사용 하지 않고도 스크립트를 작성하고 관리 할 수 있습니다.


그러나 나는 이것을 피하는 방법에 대한 아이디어를 내 .py 스크립트에 로그인과 암호를 작성해야합니다. 예를 들어 .ags 파일을 사용할 수 있습니까?)
Lora

.ags 파일을 서비스 중지 / 시작 메커니즘으로 사용할 수 없습니다. 비밀번호는 파일 어딘가에 저장해야합니다. .py 파일 자체인지 또는 .py 파일이 읽는 별도의 파일에 넣기를 원하는지 여부.
KHibma

2

ArcGIS for Server 10.1+에서는 ArcGIS Server Administration Toolkit-10.1 +를 사용할 수 있습니다

설명에서 (굵은 글씨는 내 것입니다) :

ArcGIS Server Administration Toolkit은 ArcGIS Server 관리에 도움이되는 도구와 스크립트를 제공합니다. 이 도구는 Python 으로 작성되었으며 ArcGIS Server의 REST Admin에 연결되어 다음과 같은 일반적인 관리 기능을 빠르고 쉽게 수행 할 수 있습니다.-List item

  • 서비스 중지, 시작 또는 삭제
  • 서비스 이름 바꾸기
  • 로그 레벨 수정 및 이전 로그 지우기
  • 공기업 업로드 및 등록
  • 맵 서비스를 본 위치에서 피쳐 클래스 생성 (로그 검사)
  • 게시 서비스 정의 (.SD)

이 키트의 도구는 도구, 코드 및 독립형 실행 파일의 세 가지 주요 방법으로 제공됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.