ArcGIS 10.1 for Server 包含一個 Administrator API,可用於為伺服器的常用操作編寫指令碼。通過為伺服器管理編寫指令碼,您可在計劃的時間自動執行各種常用的任務。還可降低執行複雜或重複性任務時犯錯誤的可能性。
通過 Administrator API,您可以調用 ArcGIS Server 所支援的各項管理工作。事實上,ArcGIS 附帶的所有管理工具(包括 ArcGIS for Desktop 和 ArcGIS Server 管理器)均可使用此 API。
Administrator API 使用 RESTful 架構,並且可以由任何可調用 Web 服務的語言(如 Python、Java、JavaScript、PowerShell、C#、Ruby、Scala、Perl 以及其他語言)進行調用。
您可以通過 Administrator API 以編程方式完成許多伺服器管理任務,樣本如下:
- 靜默安裝 ArcGIS Server 後建立一個網站
- 服務不可用時向您寄送電子郵件
- 添加服務
- 編輯服務屬性(如最大執行個體數)
- 授予和撤消使用者對服務的許可權
- 停止和啟動服務
- 查詢日誌並根據日誌建立使用方式報告
Server Admin地址為:http://MyServer:6080/arcgis/admin
不論何時登入到管理器或管理員目錄,都需要提供具有 ArcGIS Server 管理或發行者許可權的帳戶的使用者名稱和密碼。同樣的概念也適用於編寫指令碼時。需通過編程的方式將名稱和密碼提交到伺服器。伺服器將返回一個令牌(即一個特殊的字串),以向伺服器證明您具有執行某些類型的操作的許可權。對伺服器進行的任何 Web 服務請求中都必須包含此令牌。
令牌不會永遠有效;它具有逾時設計,以防被惡意使用者偷竊並無限期使用。每次運行指令碼時(但並非每次進行請求時),必須請求一個新令牌。
可通過以下 Python 函數請求令牌。伺服器名稱、連接埠號碼、使用者名稱和密碼將作為參數提供。
從 ArcGIS Server 要求管理令牌
def getToken(username, password, serverName, serverPort):
# Token URL is typically
http://server[:port]/arcgis/admin/generateToken
tokenURL = "/arcgis/admin/generateToken"
# URL-encode the token parameters:-
params = urllib.urlencode({'username': username, 'password': password, 'client': 'requestip', 'f': 'json'})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
# Connect to URL and post parameters
httpConn = httplib.HTTPConnection(serverName, serverPort)
httpConn.request("POST", tokenURL, params, headers)
# Read response
response = httpConn.getresponse()
if (response.status != 200):
httpConn.close()
print "Error while fetch tokens from admin URL. Please check the URL and try again."
return
else:
data = response.read()
httpConn.close()
# Extract the token from it
token = json.loads(data)
return token['token']