Add files via upload
This commit is contained in:
commit
b2117d4250
151
pve-mod-gui-temp.sh
Normal file
151
pve-mod-gui-temp.sh
Normal file
@ -0,0 +1,151 @@
|
||||
#!/bin/bash
|
||||
#This bash script installs a modification to the Proxmox Virtual Environment (PVE) web user interface (UI) to display temperature information.
|
||||
|
||||
# Filepaths
|
||||
pvemanagerlib="/usr/share/pve-manager/js/pvemanagerlib.js"
|
||||
nodespm="/usr/share/perl5/PVE/API2/Nodes.pm"
|
||||
backuplocation="/root/backup"
|
||||
timestamp=$(date '+%Y-%m-%d_%H-%M-%S')
|
||||
|
||||
|
||||
################### code below #############
|
||||
echo ""
|
||||
|
||||
# Function to display usage information
|
||||
function usage {
|
||||
echo "Usage: $0 [install | uninstall]"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Function to install the modification
|
||||
function install_mod {
|
||||
# Create backup of original files
|
||||
mkdir -p $backuplocation
|
||||
|
||||
# Add new line to Nodes.pm file
|
||||
if [[ -z $(cat $nodespm | grep -e "$res->{thermalstate}") ]]; then
|
||||
# Create backup of original file
|
||||
cp "$nodespm" "$backuplocation/Nodes.pm.$timestamp"
|
||||
echo "Backup of $nodespm saved to $backuplocation/Nodes.pm.$timestamp"
|
||||
|
||||
sed -i '/my $dinfo = df('\''\/'\'', 1);/i\'$'\t''$res->{thermalstate} = `sensors -j`;\n'$'\t''$res->{thermalstate2} = `sensors -j`;\n' "$nodespm"
|
||||
echo "Added thermalstate to $nodespm"
|
||||
else
|
||||
echo "Thermalstate already added to $nodespm"
|
||||
fi
|
||||
|
||||
# Add new item to the items array in PVE.node.StatusView
|
||||
if [[ -z $(cat "$pvemanagerlib" | grep -e "itemId: 'thermal'") ]]; then
|
||||
# Create backup of original file
|
||||
cp "$pvemanagerlib" "$backuplocation/pvemanagerlib.js.$timestamp"
|
||||
echo "Backup of $pvemanagerlib saved to $backuplocation/pvemanagerlib.js.$timestamp"
|
||||
|
||||
# Expand space in StatusView
|
||||
sed -i "/Ext.define('PVE\.node\.StatusView'/,/\},/ {
|
||||
s/\(bodyPadding:\) '[^']*'/\1 '20 15 20 15'/
|
||||
s/\(height:\) [0-9]\+/\1 360/}" "$pvemanagerlib"
|
||||
|
||||
echo "Expanded space in $pvemanagerlib"
|
||||
|
||||
sed -i "/^Ext.define('PVE.node.StatusView',/ {
|
||||
:a;
|
||||
/items:/!{N;ba;}
|
||||
:b;
|
||||
/swap.*},/!{N;bb;}
|
||||
a\
|
||||
\\
|
||||
{\n\
|
||||
itemId: 'thermal',\n\
|
||||
colspan: 1,\n\
|
||||
printBar: false,\n\
|
||||
title: gettext('CPU Thermal State'),\n\
|
||||
iconCls: 'fa fa-fw fa-thermometer-half',\n\
|
||||
textField: 'thermalstate',\n\
|
||||
renderer: function(value){\n\
|
||||
let objValue = JSON.parse(value);\n\
|
||||
let core0 = objValue[\"coretemp-isa-0000\"][\"Core 0\"][\"temp2_input\"];\n\
|
||||
let core1 = objValue[\"coretemp-isa-0000\"][\"Core 1\"][\"temp3_input\"];\n\
|
||||
let core2 = objValue[\"coretemp-isa-0000\"][\"Core 2\"][\"temp4_input\"];\n\
|
||||
let core3 = objValue[\"coretemp-isa-0000\"][\"Core 3\"][\"temp5_input\"];\n\
|
||||
return \`Core 0: \$\{core0\} C | Core 1: \$\{core1\} C | Core 2: \$\{core2\} C | Core 3: \$\{core3\} C\`\n\
|
||||
}\n\
|
||||
},\n\
|
||||
{\n\
|
||||
itemId: 'thermal2',\n\
|
||||
colspan: 1,\n\
|
||||
printBar: false,\n\
|
||||
title: gettext('NVME Thermal State'),\n\
|
||||
iconCls: 'fa fa-fw fa-thermometer-half',\n\
|
||||
textField: 'thermalstate2',\n\
|
||||
renderer: function(value){\n\
|
||||
let objValue = JSON.parse(value);\n\
|
||||
let temp0 = objValue[\"nvme-pci-0100\"][\"Composite\"][\"temp1_input\"];\n\
|
||||
return \`NVME: \$\{temp0\} C\`\n\
|
||||
}\n\
|
||||
},
|
||||
}" $pvemanagerlib
|
||||
echo "Added new item to the items array in $pvemanagerlib"
|
||||
else
|
||||
echo "New item already added to items array $pvemanagerlib"
|
||||
fi
|
||||
|
||||
# Restart pveproxy
|
||||
systemctl restart pveproxy
|
||||
}
|
||||
|
||||
# Function to uninstall the modification
|
||||
function uninstall_mod {
|
||||
# Find the latest Nodes.pm file using the find command
|
||||
latest_Nodes_pm=$(find "$backuplocation" -name "Nodes.pm.*" -type f -printf '%T+ %p\n' 2>/dev/null | sort -r | head -n 1 | awk '{print $2}')
|
||||
|
||||
if [ -z "$latest_Nodes_pm" ]; then
|
||||
echo "No Nodes.pm files found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Remove the latest Nodes.pm file
|
||||
echo cp "$latest_Nodes_pm" "$nodespm"
|
||||
echo "Copied latest backup to $nodespm"
|
||||
|
||||
# Find the latest pvemanagerlib file using the find command
|
||||
latest_pvemanagerlib_js=$(find "$backuplocation" -name "pvemanagerlib.js.*" -type f -printf '%T+ %p\n' 2>/dev/null | sort -r | head -n 1 | awk '{print $2}')
|
||||
|
||||
if [ -z "$latest_pvemanagerlib_js" ]; then
|
||||
echo "No latest_pvemanagerlib_js files found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Remove the latest Nodes.pm file
|
||||
echo cp "$latest_pvemanagerlib_js" "$pvemanagerlib"
|
||||
echo "Copied latest backup to $pvemanagerlib"
|
||||
|
||||
# Restart pveproxy
|
||||
systemctl restart pveproxy
|
||||
}
|
||||
|
||||
# If no arguments were provided or all arguments have been processed, print the usage message
|
||||
if [[ $# -eq 0 ]]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
# Process the arguments using a while loop and a case statement
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
install)
|
||||
echo "Installing the mod..."
|
||||
install_mod
|
||||
;;
|
||||
uninstall)
|
||||
echo "Uninstalling the mod..."
|
||||
uninstall_mod
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo ""
|
||||
exit 0
|
||||
BIN
pve-mod-temp.png
Normal file
BIN
pve-mod-temp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
9
pve-mods.md
Normal file
9
pve-mods.md
Normal file
@ -0,0 +1,9 @@
|
||||
pve-mod-gui-temp
|
||||
|
||||
This bash script installs a modification to the Proxmox Virtual Environment (PVE) web user interface (UI) to display temperature information. The modification includes three main steps:
|
||||
|
||||
1. Create backups of the original files located at `/usr/share/pve-manager/js/pvemanagerlib.js` and `/usr/share/perl5/PVE/API2/Nodes.pm` in the `/root/backup` directory.
|
||||
2. Add a new line to the `Nodes.pm` file that reads the thermal state information of the host using the `sensors` command.
|
||||
3. Modify the `pvemanagerlib.js` file to expand the space in the StatusView and add a new item to the items array that displays the temperature information in Celsius for the CPU cores and the NVME drive.
|
||||
|
||||
The script provides two options: `install` and `uninstall`. The `install` option installs the modification, while the `uninstall` option removes it by copying the backup files to their original location. The script also restarts the `pveproxy` service to apply the changes.
|
||||
Loading…
Reference in New Issue
Block a user