PVE6.4
先备份之后要修改的两个文件
cp /usr/share/perl5/PVE/API2/Nodes.pm /usr/share/perl5/PVE/API2/Nodes.pm.bak
cp /usr/share/pve-manager/js/pvemanagerlib.js /usr/share/pve-manager/js/pvemanagerlib.js.bak
修改文件内容 ' vi /usr/share/perl5/PVE/API2/Nodes.pm ' ,添加 ' $res->{thermalstate} =
sensors; '(注意,sensors左右两个不是分号,而是在英文状态下字母区上方的数字键区域最左侧按键打出来的反引号)
};
$res->{ksm} = {
shared => $meminfo->{memshared},
};
$res->{swap} = {
free => $meminfo->{swapfree},
total => $meminfo->{swaptotal},
used => $meminfo->{swapused},
};
$res->{pveversion} = PVE::pvecfg::package() . "/" .
PVE::pvecfg::version_text();
$res->{thermalstate} = `sensors`;
my $dinfo = df('/', 1); # output is bytes
$res->{rootfs} = {
total => $dinfo->{blocks},
avail => $dinfo->{bavail},
之后修改页面布局,增加界面高度让新的CPU内容有地方显示,编辑 ' vi /usr/share/pve-manager/js/pvemanagerlib.js ',修改以下两处地方:
showLog: function(button, event, rec) {
var me = this.getView();
var controller = this;
var logView = Ext.create('Proxmox.panel.LogView', {
border: false,
url: "/api2/extjs/nodes/" + me.nodename + "/replication/" + rec.data.id + "/log",
});
var win = Ext.create('Ext.window.Window', {
items: [logView],
layout: 'fit',
width: 800,
height: 420, 400改420
modal: true,
title: gettext("Replication Log"),
});
var task = {
run: function() {
logView.requestUpdate();
},
interval: 1000,
};
Ext.TaskManager.start(task);
第二处修改
me.callParent();
Proxmox.Utils.monStoreErrors(me, me.getStore(), true);
me.reload();
},
});
Ext.define('PVE.node.StatusView', {
extend: 'Proxmox.panel.StatusView',
alias: 'widget.pveNodeStatus',
height: 320, 300改320
bodyPadding: '20 15 20 15',
layout: {
type: 'table',
columns: 2,
tableAttrs: {
style: {
width: '100%',
},
},
},
最后增加显示CPU温度的代码
itemId: 'kversion',
colspan: 2,
title: gettext('Kernel Version'),
printBar: false,
textField: 'kversion',
value: '',
},
{
itemId: 'version',
colspan: 2,
printBar: false,
title: gettext('PVE Manager Version'),
textField: 'pveversion',
value: '',
},
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU温度'),
textField: 'thermalstate',
renderer:function(value){
const c0 = value.match(/Core 0.*?\+([\d\.]+)?/)[1];
const c1 = value.match(/Core 1.*?\+([\d\.]+)?/)[1];
const c2 = value.match(/Core 2.*?\+([\d\.]+)?/)[1];
const c3 = value.match(/Core 3.*?\+([\d\.]+)?/)[1];
return `Core: ${c0} | ${c1} | ${c2} | ${c3}`
}
}
],
updateTitle: function() {
var me = this;
var uptime = Proxmox.Utils.render_uptime(me.getRecordValue('uptime'));
me.setTitle(me.pveSelNode.data.node + ' (' + gettext('Uptime') + ': ' + uptime + ')');
},
{
itemId: 'thermal',
colspan: 2,
printBar: false,
title: gettext('CPU温度'),
textField: 'thermalstate',
renderer:function(value){
const c0 = value.match(/Core 0.*?\+([\d\.]+)?/)[1];
const c1 = value.match(/Core 1.*?\+([\d\.]+)?/)[1];
const c2 = value.match(/Core 2.*?\+([\d\.]+)?/)[1];
const c3 = value.match(/Core 3.*?\+([\d\.]+)?/)[1];
return `Core: ${c0} | ${c1} | ${c2} | ${c3}`
}
}
修改完成后,重启PVE的Web管理器
systemctl restart pveproxy
之后强制刷新页面即可显示,win下Ctrl + F5 ,Mac下 花键 + shift + R