修改WEB服务默认超时时间

问题描述

iam组件未开源,可以修改SessionTimeout的默认时间吗

~ ~ # busctl --user introspect bmc.kepler.iam /bmc/kepler/SessionService/GUI
NAME                                TYPE      SIGNATURE   RESULT/VALUE                     FLAGS
bmc.kepler.Object.Properties        interface -           -                                -
.GetAllWithContext                  method    a{ss}s      a{sv}                            -
.GetOptions                         method    a{ss}ss     a{ss}                            -
.GetPrivateProperties               method    a{ss}       s                                -
.GetPropertiesByNames               method    a{ss}sas    a{sv}a{sv}                       -
.GetPropertiesByOptions             method    a{ss}sa{ss} as                               -
.GetPropertyDetail                  method    a{ss}ss     s                                -
.GetWithContext                     method    a{ss}ss     v                                -
.SetWithContext                     method    a{ss}ssv    -                                -
.ClassName                          property  s           "SessionService"                 emits-change
.ObjectIdentifier                   property  (ysss)      0 "" "" ""                       emits-change
.ObjectName                         property  s           "/bmc/kepler/SessionService/GUI" emits-change
.TraceSamplingRate                  property  d           0                                emits-change
bmc.kepler.SessionService           interface -           -                                -
.ServiceEnabled                     property  b           true                             -
.SessionMaxCount                    property  u           4                                emits-change
.SessionMode                        property  u           1                                emits-change writable
.SessionTimeout                     property  u           300                              emits-change writable
org.freedesktop.DBus.Introspectable interface -           -                                -
.Introspect                         method    -           s                                -
org.freedesktop.DBus.ObjectManager  interface -           -                                -
.GetManagedObjects                  method    -           a{oa{sa{sv}}}                    -
org.freedesktop.DBus.Peer           interface -           -                                -
.GetMachineId                       method    -           s                                -
.Ping                               method    -           -                                -
org.freedesktop.DBus.Properties     interface -           -                                -
.Get                                method    ss          v                                -
.GetAll                             method    s           a{sv}                            -
.Set                                method    ssv         -                                -
.PropertiesChanged                  signal    sa{sv}as    -                                -

答案内容由AI生成,仅供参考:

总结

方法 即时性 持久性 依赖开源
busctl set-property :white_check_mark: 立即生效 :cross_mark: 重启后可能恢复默认 :white_check_mark: 不依赖iam开源
BMCSet_SessionTimeout 重启/重载后生效 :white_check_mark: 持久化 :white_check_mark: 不依赖iam开源

推荐做法:若需临时调整,使用 busctl 命令;若需永久修改默认值,请查找系统中的 BMCSet_SessionTimeout 参数进行配置(具体配置方式请参考对应版本的系统手册)。

点击此处查看详细分析解答

根据您提供的上下文信息,您可以通过以下方式修改 WEB 服务的默认超时时间,即使 iam 组件未开源(其 D-Bus 接口是公开可用的):


1. 通过 D-Bus 命令动态修改(推荐,即时生效)

使用 busctl 工具直接设置 SessionTimeout 属性。该属性为可写属性,单位是 。默认值为 300(即 5 分钟),有效范围对应 5~480 分钟(即 300~28800 秒)。

# 设置超时时间为 10 分钟(600 秒)
busctl --user set-property bmc.kepler.iam /bmc/kepler/SessionService/GUI bmc.kepler.SessionService SessionTimeout u 600

# 查看当前超时时间
busctl --user get-property bmc.kepler.iam /bmc/kepler/SessionService/GUI bmc.kepler.SessionService SessionTimeout

说明:您的 busctl introspect 输出中显示 SessionTimeout 属性有 writable 标记,证实可以通过此方法修改。该修改在运行时立即生效,但重启后可能恢复默认值(需检查持久化机制)。


2. 通过系统参数 BMCSet_SessionTimeout 设置(持久化方案)

上下文知识图谱提到:

  • BMCSet_SessionTimeout 是系统参数,用于定义 Web 会话超时时间,单位为分钟,有效范围 5~480,默认值为 5
  • 该参数可通过配置文件或系统接口进行设置(具体配置方式需参考实际系统文档),修改后会自动影响 D-Bus 上的 SessionTimeout 属性,并支持掉电持久化。
# 示例:通过参数设置超时时间为 10 分钟(需根据实际系统工具执行,此处仅为概念说明)
BMCSet_SessionTimeout=10

注意:若您尝试修改源代码中的硬编码默认值(如 iam 组件内的默认配置),由于 iam 组件未开源,无法直接修改其代码。但通过上述两种方式均可绕过代码修改,直接改变运行时的超时行为。


3. 关于“编译时带 -O 参数不生效”的说明

您提到的“修改配置文件后编译时带了 -O 参数仍然不生效”,可能原因包括:

  • 配置文件的修改未正确生效(例如文件路径或格式有误)。
  • 代码中存在硬编码(如上下文提及的“写死”的默认值),且配置文件未被正确加载。

建议优先使用 D-Bus 动态修改 方式,它直接与运行中的 SessionService 交互,无需编译或重启组件。


总结

方法 即时性 持久性 依赖开源
busctl set-property :white_check_mark: 立即生效 :cross_mark: 重启后可能恢复默认 :white_check_mark: 不依赖iam开源
BMCSet_SessionTimeout 重启/重载后生效 :white_check_mark: 持久化 :white_check_mark: 不依赖iam开源

推荐做法:若需临时调整,使用 busctl 命令;若需永久修改默认值,请查找系统中的 BMCSet_SessionTimeout 参数进行配置(具体配置方式请参考对应版本的系统手册)。

可以的

1、web修改

2、装备定制,配置BMCSet_SessionTimeout

修改有方法验证吗,设备没有设置过还原点,通过不保留配置的方式升级BMC后配置还是原有配置,没有恢复默认值

可以修改为10分钟,看下到时间是否超时

我是通过BMCSet_SessionTimeout修改默认值并出包,如何验证新包的默认值是生效的

不是直接改profile里面的默认值,而是通过装备定制化方法验证

简易装备定制化方法

①新建customset.ini,写入BMCSet_SessionTimeout=10,并文件上传至BMC /tmp目录下,确保该文件是LF换行符

如果BMC网络是静态ip,为了避免网络变成dhcp,网络配置也加上,这里示例192.168.2.100

BMCSet_SessionTimeout=10
BMCSet_ETH0_DHCPMode=off
BMCSet_Eth0_Ipv4=on
Custom_Eth0_Ip_Addr=192.168.2.100/24
Custom_ipv4_gateway=192.168.2.100
BMCSet_Ipv6_DHCPMode=on

②执行ipmitool raw 0x30 0x90 0x21 0xf0命令开启定制

③执行ipmitool raw 0x30 0x90 0x22 0xef命令查询定制状态,返回00正在进行中,01定制成功

④查询定制成功后,可以验证

没有定制成功

2027-06-04 20:53:06.361810 bmc_network NOTICE: customize_config.lua(608): Set CustomSettings DDSN DomainName to () successfully
2027-06-04 20:53:06.362700 bmc_network NOTICE: customize_config.lua(613): customize_dedicated_maint_ip_import start
2027-06-04 20:53:06.363823 bmc_network ERROR: customize_config.lua(616): CustomSettings property [BMCSet_Maint_IPv4] import not supported.
2027-06-04 20:53:06.364847 bmc_network NOTICE: customize_config.lua(642): customize_dedicated_maint_mask_import start
2027-06-04 20:53:06.365968 bmc_network ERROR: customize_config.lua(645): CustomSettings property [BMCSet_Maint_SubnetMask] import not supported.
2027-06-04 20:53:06.366956 bmc_network NOTICE: customize_config.lua(671): customize_chassis_lan_subnet_import start
2027-06-04 20:53:06.367946 bmc_network NOTICE: customize_config.lua(679): current have no inner eth group
2027-06-04 20:53:06.368976 bmc_network NOTICE: customize_config.lua(701): customize_inenr_network_import start
2027-06-04 20:53:06.370334 bmc_network ERROR: customize_config.lua(704): CustomSettings property [BMCSet_RackInner_SubNet] import not supported.
2027-06-04 20:53:06.370740 bmc_network NOTICE: customize_config.lua(721): customize_inenr_vlan_import start
2027-06-04 20:53:06.372129 bmc_network ERROR: customize_config.lua(724): CustomSettings property [BMCSet_RackInner_VLAN_ID] import not supported.
2027-06-04 20:53:06.373235 bmc_network NOTICE: customize_config.lua(759): customize_slaac_enable_import start
2027-06-04 20:53:06.376482 bmc_network NOTICE: customize_config.lua(768): CustomSettings BMCSet_SLAACEnable not change
2027-06-04 20:53:06.378329 bmc_network NOTICE: customize_config.lua(740): customize_ip_version_import start

这个profile_schema组件是不是和闭源不配套啊

bmc_network/1.80.152@openubmc/stable
profile_schema/1.70.61@openubmc/stable

检查下定制项配置文件。

日志里已清楚的说明,以下这些配置项不是正确的,不支持定制导入。

BMCSet_Maint_IPv4
BMCSet_Maint_SubnetMask
BMCSet_RackInner_SubNet
BMCSet_RackInner_VLAN_ID

customset.ini中只写了这些配置项

有OS 么, ipmitool能执行不。
能行的话, 只放 BMCSet_SessionTimeout=10 试下。

其他的属于 bmc_core sig. 可以单独发帖咨询

最简单验证方法,调用Import方法

busctl --user call bmc.kepler.iam /bmc/kepler/iam/MicroComponent bmc.kepler.MicroComponent.ConfigManage Import a{ss}ss 0 '{"ConfigData":{"CustomSettings":{"BMCSet_SessionTimeout":{"Value":"10","Import":true}}}}' 'custom'