我有一个精简的实时Linux机箱,与一些硬件接口。试图读取DBM文件
配置文件是* .dbm文件,我无法访问它们。他们似乎是某种键值数据库,但我试过的每个图书馆都是空的。
我试过了从Perl,Python和Ruby运行的DBM阅读库,但没有运气。任何有关这些文件的指导都很棒,我以前从未见过。
这就是当我掏出一个文件时会发生什么。
DBMFILE Aug 31 2004,�
,jy �
�~���"��+�K&��gB��7JJ�
,��GLOBA.PB_COMBI�SMSI���
JG]
,��BUS_DP
PC �
'
xLokalT
J��
,��SL_DP
PC!�
��
#,��PLC_PARAMJPf,��PROJEKT�PROFIBUS new network1.00022.02.2012J,��KBL_HEADER:�JJp,��KBLJ��,��ALI-SETUPB ����
������������������JJ,,��OBJ-DEFJJ��,��ALI_CLIENTTJJ�
,��ALI_SERVERJ J\r�����2, �� ST_OV_00Boolean0Integer8 0Integer16
0Integer32
0Unsigned8
0Unsigned32Floating-Point0igned16
Octet String Jo� ,��DESCRIPT �ABB OyABB Drives RPBA-01ABBSlave1***reserved***�
�
%
所以要显示什么我已经试过了,只有拿出空对象(不键值)*编辑
的perl -
#!/usr/bin/perl -w
use strict;
use DB_File;
use GDBM_File;
my ($filename, %hash, $flags, $mode, $DB_HASH) = @ARGV;
tie %hash, 'DB_File', [$filename, $flags, $mode, $DB_HASH]
or die "Cannot open $filename: $!\n";
while (my($key, $value) = each %hash) {
print "$key = $value\n";
}
# these unties happen automatically at program exit
untie %hash;
它没有返回
python -
db = dbm.open('file', 'c')
红宝石 -
db = DBM.open('file', 666, DBM::CREATRW)
其中每一个返回空。我假设他们使用相同的低级库。 DBM文件的一些历史/上下文会很好,因为似乎有一些不同的版本。
**编辑
在其上运行的文件返回
$ file abb12mb_uncontrolledsynch_ppo2_1slave.dbm
abb12mb_uncontrolledsynch_ppo2_1slave.dbm: data
和运行字符串输出
$ strings abb12mb_uncontrolledsynch_ppo2_1slave.dbm
DBMFILE
Aug 31 2004
GLOBAL
PB_COMBI
SMSI
BUS_DP
Lokal
SL_DP
PLC_PARAM
PROJEKT
PROFIBUS new network
1 .000
22.02.2012
KBL_HEADER
ALI-SETUP
OBJ-DEF
ALI_CLIENT
ALI_SERVER
ST_OV_0
Boolean
Integer8
Integer16
Integer32
Unsigned8
Unsigned16
Unsigned32
Floating-Point
Octet String
DESCRIPT
ABB Oy
ABB Drives RPBA-01
ABBSlave1
***reserved***
你尝试'文件'串$ filename'的filename' $? – 2015-01-15 15:11:00
答案是使用DBM库,例如Perl的['DB_File'](https://metacpan.org/module/DB_File)。 *“我已经尝试了从perl,python等DBM阅读库,但没有运气。”*请说明你写的内容并描述它如何不适合你。 – Borodin 2015-01-15 15:13:35
Ran'file'和'Strings'没有检索到任何信息或值。更新后显示不同的尝试 – bischoffingston 2015-01-15 16:27:27