Define Satellite location and login details
Authenticate and get session key
Get list of systems available to user
Logout
#!/usr/bin/python
import xmlrpclib
# Define Satellite location and login details
SATELLITE_URL = "http://localhost/rpc/api"
SATELLITE_LOGIN = "admin"
SATELLITE_PASSWORD = "password"
client = xmlrpclib.Server(SATELLITE_URL, verbose=0)
# Authenticate and get session key
key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD)
# Get list of systems available to user
list = client.system.listSystems(key)
for system in list:
print system.get('id')
print system.get('name')
# Logout
client.auth.logout(key)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用 Python 列出 Satellite 6 上的可用主机
本例使用 Python 脚本连接到 Satellite 6,身份验证并检索可用主机的列表。
Define Satellite location and login details
#!/usr/bin/python
import json
import requests
# Define Satellite location and login details
SAT_API = "https://localhost/api/v2/"
USERNAME = "admin"
PASSWORD = "changeme"
SSL_VERIFY = False
def get_json(location):
"""
Performs a GET using the passed URL location
"""
r = requests.get(location, auth=(USERNAME, PASSWORD), verify=SSL_VERIFY)
return r.json()
def main():
# List all hosts available to the user
hosts = get_json(SAT_API + "hosts/")
# Pretty Print the returned JSON of Hosts
print json.dumps(hosts, sort_keys=True, indent=4)
if __name__ == "__main__":
main()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用命令行列出 Satellite 5 上的可用系统
使用以下命令列出 Satellite 5 上的可用系统:
spacecmd -u username -p password system_list
# spacecmd -u username -p password system_list
Copy to ClipboardCopied!Toggle word wrapToggle overflow
会话示例可能如下所示:
spacecmd -u admin -p password system_list
# spacecmd -u admin -p password system_list
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
test_02.example.com
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用命令行列出 Satellite 6 上的可用主机
使用以下命令列出 Satellite 6 上的可用主机:
hammer host list
# hammer host list
Copy to ClipboardCopied!Toggle word wrapToggle overflow
会话示例可能如下所示:
hammer host list
# hammer host list
[Foreman] password for admin:
---|-----------------|-------------------|------------|--------------|------------------
ID | NAME | OPERATING SYSTEM | HOST GROUP | IP | MAC
---|-----------------|-------------------|------------|--------------|------------------
1 | test.example.com | RHEL Server 6.5 | | 10.34.34.235 | e4:1f:13:6b:ed:0c
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Define Satellite location and login details
Authenticate and get session key
Get list of users
Look for user example and if found, delete the user
Create a user called example
Logout
#!/usr/bin/python
import xmlrpclib
# Define Satellite location and login details
SATELLITE_URL = "http://localhost/rpc/api"
SATELLITE_LOGIN = "admin"
SATELLITE_PASSWORD = "password"
client = xmlrpclib.Server(SATELLITE_URL, verbose=0)
# Authenticate and get session key
key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD)
# Get list of users
list = client.user.list_users(key)
print "Existing users in Satellite:"
for user in list:
print user.get('login')
# Look for user example and if found, delete the user
for user in list:
if user.get('login') == 'example':
deleteuser = client.user.delete(key, 'example')
if deleteuser == 1:
print "User example deleted"
# Create a user called example
createuser = client.user.create(key, 'example', 'password', 'Example', 'User', "root@localhost")
if createuser == 1:
print "User example created"
# Admin Org Admin role to the example user
adminrole = client.user.addRole(key, 'example', 'org_admin')
if adminrole == 1:
print "Made example an Org Admin"
# Logout
client.auth.logout(key)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
#!/usr/bin/python
import json
import requests
# Define Satellite location and login details
SAT_API = "https://localhost/api/v2/"
POST_HEADERS = {'content-type': 'application/json'}
USERNAME = "admin"
PASSWORD = "changeme"
SSL_VERIFY = False
def get_json(location):
"""
Performs a GET using the passed URL location
"""
r = requests.get(location, auth=(USERNAME, PASSWORD), verify=SSL_VERIFY)
return r.json()
def post_json(location, json_data):
"""
Performs a POST and passes the data to the URL location
"""
result = requests.post(
location,
data=json_data,
auth=(USERNAME, PASSWORD),
verify=SSL_VERIFY,
headers=POST_HEADERS)
return result.json()
def delete_json(location):
"""
Performs a DELETE and passes the id to the URL location
"""
result = requests.delete(
location,
auth=(USERNAME, PASSWORD),
verify=SSL_VERIFY)
return result.json()
def main():
# List all users within the Satellite
users = get_json(SAT_API + "users/")
#print json.dumps(users, indent=4)
print "Users known are:"
for login in users['results']:
print login['login']
# Look for user example and if found, delete the user
for delete in users['results']:
if delete['login'] == 'example':
id = delete ['id']
id = str(id)
delete = delete_json(SAT_API + "/users/" + id)
#print json.dumps(delete, indent=4)
print "User example deleted"
# Create a user called example as admin role
createuser = post_json(SAT_API + "/users/", json.dumps({ "mail": "root@localhost", "firstname": "Example", "lastname": "User", "login": "example", "password": "redhat", "admin": 'true', "auth_source_id": 1 }))
#print json.dumps(createuser, indent=4)
print "Admin user example created"
if __name__ == "__main__":
main()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用 Ruby 在 Satellite 6 上管理用户
这个示例使用 Ruby 执行与上例相同的任务。
List all users within the Satellite
Look for user example and if found, delete the user
Create a user called example as admin role
#!/usr/bin/env ruby
require 'json'
require 'rest-client'
url = 'https://localhost/api/v2/'
$username = 'admin'
$password = 'changeme'
def get_json(location)
response = RestClient::Request.new(
:method => :get,
:url => location,
:user => $username,
:password => $password,
:headers => { :accept => :json,
:content_type => :json }
).execute
results = JSON.parse(response.to_str)
end
def post_json(location, json_data)
response = RestClient::Request.new(
:method => :post,
:url => location,
:user => $username,
:password => $password,
:headers => { :accept => :json,
:content_type => :json},
:payload => json_data
).execute
results = JSON.parse(response.to_str)
end
def delete_json(location)
response = RestClient::Request.new(
:method => :delete,
:url => location,
:user => $username,
:password => $password,
:headers => { :accept => :json,
:content_type => :json }
).execute
results = JSON.parse(response.to_str)
end
# List all users within the Satellite
users = get_json(url+"users/")
#puts JSON.pretty_generate(users)
puts "Users known are:"
users['results'].each do |name|
puts name['login']
end
# Look for user example and if found, delete the user
users['results'].each do |name|
if name['login'] == 'example'
id = name['id']
delete = delete_json(url+"users/"+id.to_s)
#puts JSON.pretty_generate(delete)
puts "User example deleted"
end
end
# Create a user called example as admin role
data = JSON.generate({ :mail => "root@localhost", :firstname => "Example", :lastname => "User", :login => "example", :password => "password", :admin => 'true', :auth_source_id => 1})
createuser = post_json(url+"users/", data)
#puts JSON.pretty_generate(createuser)
puts "Admin user example created"
exit()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
# spacecmd -u admin -p password user_list
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
admin
example
# spacecmd -u admin -p password user_delete example
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
Delete this user [y/N]: y
# spacecmd -u admin -p password user_list
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
admin
# spacecmd -u admin -p password user_create
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
Username: example
First Name: Example
Last Name: User
Email: root@localhost
PAM Authentication [y/N]: n
Password:
Repeat Password:
# spacecmd -u admin -p password user_list
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
admin
example
# spacecmd -u admin -p password user_addrole example org_admin
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
# spacecmd -u admin -p password user_details example
INFO: Spacewalk Username: admin
INFO: Connected to https://localhost/rpc/api as admin
Username: example
First Name: Example
Last Name: User
Email Address: root@localhost
Organization: MY ORG
Last Login:
Created: 8/19/14 8:42:52 AM EDT
Enabled: True
Roles
-----
activation_key_admin
channel_admin
config_admin
monitoring_admin
org_admin
system_group_admin
Copy to ClipboardCopied!Toggle word wrapToggle overflow
使用命令行在 Satellite 6 上管理用户
本例使用 hammer 命令执行与上一示例相同的任务。
hammer shell
user list
user delete --id 4 --login example
user create --admin true --firstname Example --lastname User --login example --mail root@localhost --password redhat --auth-source-id 1
# hammer shell
> user list
> user delete --id 4 --login example
> user create --admin true --firstname Example --lastname User --login example --mail root@localhost --password redhat --auth-source-id 1
Copy to ClipboardCopied!Toggle word wrapToggle overflow
会话示例可能如下所示:
hammer shell
# hammer shell
[Foreman] password for admin:
Welcome to the hammer interactive shell
Type 'help' for usage information
hammer> user list
---|---------|--------------|---------------
ID | LOGIN | NAME | EMAIL
---|---------|--------------|---------------
4 | example | Example User | root@localhost
3 | admin | Admin User | root@localhost
---|---------|--------------|---------------
hammer> user delete --id 4 --login example
User deleted
hammer> user list
---|-------|------------|---------------
ID | LOGIN | NAME | EMAIL
---|-------|------------|---------------
3 | admin | Admin User | root@localhost
---|-------|------------|---------------
hammer> user create --admin true --firstname Example --lastname User --login example --mail root@localhost --password redhat --auth-source-id 1
User created
hammer> user list
---|----------|--------------|---------------
ID | LOGIN | NAME | EMAIL
---|----------|--------------|---------------
3 | admin | Admin User | root@localhost
5 | example | Example User | root@localhost
---|----------|--------------|---------------
hammer>
Copy to ClipboardCopied!Toggle word wrapToggle overflow