FEATURE REQUEST

cgries
New Contributor

Please create a Self Service app/web clip that allows user to update inventory from their device. 

1 ACCEPTED SOLUTION

AJPinto
Honored Contributor III

Have you already submitted a feature request that you could link? People can upvote feature requests you submit to help draw attention to them.

 

AJPinto_0-1727967471196.png

 

View solution in original post

4 REPLIES 4

AJPinto
Honored Contributor III

Have you already submitted a feature request that you could link? People can upvote feature requests you submit to help draw attention to them.

 

AJPinto_0-1727967471196.png

 

dvasquez
Valued Contributor

You can also do this by creating a self-service policy leveraging the Files and Processes payload and setting a nice icon. Seems, like this will do exactly what you are asking but it is not a web click specifically.

Good Luck

  1. Policies
  2. User > Files and Processes
  3. put the jamf recon command in place
  4. Set it to self service 
  5. Set scope
  6. Set icon
  7. Save and test
  8. Screenshot 2024-10-03 at 3.51.32 PM.png

  9.  
  10.  
  11. Screenshot 2024-10-03 at 3.51.42 PM.png

sdagley
Esteemed Contributor II

@cgries A Policy that can be triggered via Self Service that has only a Maintenance payload with Update Inventory enabled does what you're asking so I'm not sure why a Feature Request would be necessary.

asoderman
New Contributor III

Hello,

We have something like this in our environment. I will paste what we have below and you can see if it might work for you. 
It is a Python script running on a Mac mini with a static IP and some ports forwarded to an A record on the firewall. It allows a web clip for both blank push and inventory on iPads. It could be created for Macs as well with some slight modifications.

Here is the script:

#!/usr/local/bin/python

from flask import Flask
import requests
import time

app = Flask(__name__)

jss_user = 'API CONNECTION USERNAME HERE'
jss_pass = 'API CONNECTION PASSWORD HERE'
jss_url = 'YOUR JAMF URL HERE'
logo_url = 'YOUR APP LOGO HERE'
logo_width = '40%'
text_color = 'color:#002664'

@app.route("/")
def hello():
return "JSS Remote Commands Utility"

@app.route('/update/<id>')
def update_inventory(id):
url = jss_url+'/JSSResource/mobiledevicecommands/command/UpdateInventory/id/' + id
r = requests.post(url, auth=(jss_user,jss_pass), verify=True)
return "<html><body><center><br/><br/><img src="+logo_url+" width="+logo_width+"><h1 style="+text_color+">Update Inventory Request Sent</h1><br/><h2 style="+text_color+">The inventory process may take up to 5 minutes.<br/>You may return to the Home Screen at this time, but do not lock this iPad.</h2></center></body></html>"

@app.route('/push/<id>')
def blank_push(id):
url = jss_url+'/JSSResource/mobiledevicecommands/command/BlankPush/id/' + id
r = requests.post(url, auth=(jss_user,jss_pass), verify=True)
return "<html><body><center><br/><br/><img src="+logo_url+" width="+logo_width+"><h1 style="+text_color+">Blank Push Request Sent</h1><br/><h2 style="+text_color+">Any pending commands for this device will be received within 5 minutes.<br/>You may return to the Home Screen at this time, but do not lock this iPad.</h2></center></body></html>"

if __name__ == "__main__":
app.run(host='0.0.0.0', port=8000, debug=False)

Here is the JAMF side of things:
http://YourARecordHere:YourPortHere/update/$JSSID


Here is the firewall information:

We have a firewall rule that says from any source pointing to the A record, send it to the local IP and ONLY allow the service "python". This is with a Fortigate so your usage may be different.

Hope this helps!