Python Script to Login to Extension Mobility without PIN
Login to Cisco IP Phone remotely without knowing user’s PIN
In this article, we will learn how to login to Cisco IP Phone remotely without knowing user’s PIN. I have created a python script to do this activity. The script comes very handy and easy to use. This is very helpful when you have cluster migration or site migration or a new site build. You can remotely get the users logged into their IP Phone which will save a huge amount of time.
To perform the login, there are three files associated.
- EMLoginWithoutPIN.py – The EMLoginWithoutPIN.py file is actually the heart which contains all the program. All you need to do is modify the appEmProxyUser in the script. This
- Data.csv – This file contains all the data related to the users. You need to feed in the IP Address of the CUCM, Mac-Address of the user’s device and user’s CUCM user id.
- result.csv – This file will contain results once you execute the script, the results file will tell you whether the user was logged in or not.
Creating a Application User in CUCM
- Login to CUCM
- Navigate to User Management > Application User > Add New
- Add the Application user name as “emlogin“
- Create a Password
- Permission Information > Click on Add to access control group
- Add “Standard EM Authentication Proxy Rights” rights to the group
- Click on Save
Modifying the data.csv
- Make sure that the headers are not modified in the data.csv file
- Enter the IP Address of the Call Manager in Column A starting from 2nd Row in A Column.
- Enter the Mac Address of the IP Phone in Column C starting from 2nd Row in B Column. Make sure you prefix SEP in the mac-address.
- Enter the User ID of the user whom you want to get logged into the IP Phone starting from 2nd Row in C Column
- Keep entering the details row wise without keeping any blank rows.
- Save the file
Here is the Python script
################################################### ################################################### ## This python script is created by UC Collabing ## ################################################### ################################################### from pydoc import resolve from urllib import response import requests import pandas as pd import re import getpass import xml.etree.ElementTree as ET df = pd.read_csv('data.csv') ipAddress = df['IP_Address'] deviceName = df['Device_Name'] userID = df['UserID'] f = open("result.csv", "w+") f.write("IP_Address, Device_Name, UserID, Status") f.write("\n") f.close() ############################## appEmProxyUser = "emlogin" ############################## appPw = getpass.getpass(prompt="Enter the EM Proxy User password: ") for ipAddress, deviceName, userID, in zip(ipAddress, deviceName, userID): result = [] uri = "http://" + ipAddress + ":8080/emservice/EMServiceServlet" headers = {"Content-Type": "application/x-www-form-urlencoded"} param = """<request> <appInfo> <appID>"""+appEmProxyUser+"""</appID> <appCertificate>"""+appPw+"""</appCertificate> </appInfo> <login> <deviceName>"""+deviceName+"""</deviceName> <userID>"""+str(userID)+"""</userID> </login> </request>""" r = requests.post(uri, data={"xml":param},headers=headers) XMLDoc=ET.fromstring(r.content) try: resPattern=XMLDoc.find(".//error").text #resPattern = resPattern.splitlines() resPattern = resPattern.rstrip("\n") #print(ET.tostring(XMLDoc, encoding='utf8').decode('utf8')) print(resPattern) except: resPattern=XMLDoc.find(".//success").text #resPattern = resPattern.splitlines() #resPattern = resPattern.rstrip("\n") #print(ET.tostring(XMLDoc, encoding='utf8').decode('utf8')) resPattern = "Success" print(resPattern) result.append([ipAddress, deviceName, userID, resPattern]) for i in result: i = ", ".join('%s' %id for id in i) f = open("result.csv", "a") f.write(i) f.write("\n") f.close()
Reading the results.csv
- Open the results.csv file
- This will give you the results of the execution you made.
- The results will appear in column D.
Here is the YouTube demo video.
I am working in an IT company and having 10+ years of experience into Cisco IP Telephony and Contact Center. I have worked on products like CUCM, CUC, UCCX, CME/CUE, IM&P, Voice Gateways, VG224, Gatekeepers, Attendant Console, Expressway, Mediasense, Asterisk, Microsoft Teams, Zoom etc. I am not an expert but i keep exploring whenever and wherever i can and share whatever i know. You can visit my LinkedIn profile by clicking on the icon below.
“Everyone you will ever meet knows something you don’t.” ― Bill Nye