从Oracle Forms 10g WebUtil执行SUSE Linux命令



从我拥有的Oracle Forms 10g中,我正在尝试运行以下命令:

command:='fdisk -l | grep Disk ';

虽然这不会引发任何编译时错误,但似乎没有输出。但是,当我编辑相同的命令如下时,生成结果输出没有问题。

command:='fdisk' ;

我有一种感觉,我可能在形成正确的命令字符串以执行时犯了一个错误。

任何帮助都将非常有帮助。

为了获得硬盘驱动器的数量和每个硬盘驱动器的容量,我希望使该命令正常工作:

command:='fdisk -l | grep Disk ';

由于我做不到,我认为我需要启动下一个替代方案,并编写几行额外的代码来获取我在 Oracle Forms 10g 中想要的信息。对于那些可能遇到类似问题的人来说,这可能会派上用场。以下是经过测试并发现返回所需结果的代码部分。

command:='fdisk -l ';
process := WEBUTIL_HOST.Blocking(command);
stnd := WEBUTIL_HOST.Get_Standard_Output(process);

totalVal :=0;
If stnd.count >= 1 Then        
For i in stnd.first .. stnd.last Loop
if(instr(UPPER(stnd(i)),UPPER('Disk /dev/sd'))>0) Then
firstPos := instr(stnd(i),'Disk /dev/',1)+length('Disk /dev/sda:')+1;
nextPos := instr(stnd(i),'GB',1);
diffPos := nextPos - firstPos;
extractPos := trim(substr(stnd(i),firstPos,diffPos));
totalVal := totalVal+to_number(extractPos,'999999.9999999');

end if; 
End loop ;

我相信上述操作可以很容易地完成,如果不是更优雅的话,已经使用模式匹配条件来完成。

最新更新