main
commit
983c786222
|
@ -0,0 +1,34 @@
|
|||
#import urllib3
|
||||
#from urllib3 import request
|
||||
import requests
|
||||
proxmox_host = "IP"
|
||||
username = "user"
|
||||
password = "passw"
|
||||
realm = 'pam'
|
||||
|
||||
|
||||
auth_url = f'{proxmox_host}/api2/json/access/ticket'
|
||||
auth_data = {'username': username, 'password': password, 'realm': realm}
|
||||
auth_response = requests.post(auth_url, data=auth_data, verify=False)
|
||||
|
||||
try:
|
||||
auth_response.raise_for_status()
|
||||
auth_ticket = auth_response.json().get('data', {}).get('ticket')
|
||||
if auth_ticket:
|
||||
print(f'Autenticación exitosa. Ticket: {auth_ticket}')
|
||||
else:
|
||||
print('No se pudo obtener el ticket de autenticación.')
|
||||
except requests.exceptions.HTTPError as err:
|
||||
print(f'Error en la solicitud de autenticación. Código de estado: {auth_response.status_code}, Mensaje: {auth_response.text}')
|
||||
raise err
|
||||
|
||||
user_url = f'{proxmox_host}/api2/json/access/users'
|
||||
#r = http.request('GET',user_url)
|
||||
headers = {'CSRFPreventionToken': auth_ticket}
|
||||
user_data = {'userid': 'test', 'password': '12345', 'comment': 'soft-pro'}
|
||||
|
||||
response = request.post(user_url, headers=headers, data=user_data, verify=False)
|
||||
if response.status_code == 200:
|
||||
print(f'Usuario creado exitosamente: {response.json()}')
|
||||
else:
|
||||
print(f'Error al crear usuario. COdigo de estado: {response.status_code}, Mensaje: {response.text}')
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
PROXMOX_HOST="host"
|
||||
PROXMOX_USER="user"
|
||||
PROXMOX_PASSWORD="password"
|
||||
REALM="pam"
|
||||
|
||||
|
||||
NEW_USERNAME="terraforms-$(hostname)@pve"
|
||||
NEW_PASSWORD=$(openssl rand -base64 14)
|
||||
NEW_ROLE="soft"
|
||||
|
||||
|
||||
API_URL="https://${PROXMOX_HOST}/api2/json/access/users"
|
||||
|
||||
|
||||
create_user() {
|
||||
local response
|
||||
response=$(curl -s -k -b "PVEAuthCookie=${PROXMOX_TICKET}" -H "CSRFPreventionToken: ${CSRF_TOKEN}" -d "username=${NEW_USERNAME}" -d "password=${NEW_PASSWORD}" -d "roleid=${NEW_ROLE}" -d "realm=${REALM}" "${API_URL}")
|
||||
|
||||
if [[ "${response}" == *"create failed"* ]]; then
|
||||
echo "Error: User creation failed."
|
||||
echo "${response}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
authenticate() {
|
||||
local response
|
||||
response=$(curl -s -k -d "username=${PROXMOX_USER}" -d "password=${PROXMOX_PASSWORD}" -d "realm=${REALM}" -X POST "https://${PROXMOX_HOST}/api2/json/access/ticket")
|
||||
|
||||
if [[ "${response}" == *"authentication failed"* ]]; then
|
||||
echo "Error: Authentication failed."
|
||||
echo "${response}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PROXMOX_TICKET=$(echo "${response}" | jq -r '.data.ticket')
|
||||
CSRF_TOKEN=$(echo "${response}" | jq -r '.data.CSRFPreventionToken')
|
||||
}
|
||||
|
||||
|
||||
authenticate
|
||||
create_user
|
||||
|
||||
|
||||
echo "Usuario creado correctamente:"
|
||||
echo "Username: ${NEW_USERNAME}"
|
||||
echo "Password: ${NEW_PASSWORD}"
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
|
||||
PROXMOX_NODE_IP="IP"
|
||||
PROXMOX_NODE_NAME=what
|
||||
PROXMOX_STORAGE="local-lvm"
|
||||
|
||||
API_USER="user"
|
||||
API_USER_PASSWORD="password"
|
||||
|
||||
CRED="username=$API_USER@pve&password=$API_USER_PASSWORD"
|
||||
|
||||
curl --silent --insecure --data $CRED https://$PROXMOX_NODE_IP:8006/api2/json/access/ticket | jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie
|
||||
curl --silent --insecure --data $CRED https://$PROXMOX_NODE_IP:8006/api2/json/access/ticket | jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > token
|
||||
|
||||
# container config
|
||||
|
||||
CPU=1
|
||||
CPUUNITS=512
|
||||
MEMORY=512
|
||||
DISK=4G
|
||||
SWAP=0
|
||||
OS_TEMPLATE="local:vztmpl/debian-12-standard_!2.2-1_amd64.tar.zst"
|
||||
|
||||
|
||||
# script options
|
||||
|
||||
case $1 in
|
||||
|
||||
start|stop) curl --silent --insecure --cookie "$(<cookie)" --header "$(<token)" -X POST https://$PROXMOX_NODE_IP:8006/api2/json/nodes/$PROXMOX_NODE_NAME/lxc/$2/status/$1; echo " done." ;;
|
||||
|
||||
create) curl --insecure --cookie "$(<cookie)" --header "$(<token)" -X POST --data-urlencode net0="name=tnet$2,bridge=vmbr0" --data ostemplate=$OS_TEMPLATE --data storage=$PROXMOX_STORAGE --data vmid=$2 --data cores=$CPU --data cpuunits=$CPUUNITS --data memory=$MEMORY --data swap=$SWAP --data hostname=ctnode$2 https://$PROXMOX_NODE_IP:8006/api2/json/nodes/$PROXMOX_NODE_NAME/lxc; echo " done." ;;
|
||||
|
||||
delete) curl --silent --insecure --cookie "$(<cookie)" --header "$(<token)" -X DELETE https://$PROXMOX_NODE_IP:8006/api2/json/nodes/$PROXMOX_NODE_NAME/lxc/$2;echo " done." ;;
|
||||
|
||||
*) echo ""; echo " usage: start|stop|create|delete <vmid> ";echo ""; ;;
|
||||
|
||||
esac
|
||||
|
||||
# remove cookie and token
|
||||
|
||||
rm cookie token
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue