科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道通过振动向Linux ThinkPad传输信息(5)

通过振动向Linux ThinkPad传输信息(5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

通过修改内核以在受震动导致内核出现紧急情况时自动重置 Linux 膝上型计算机,让您的计算机处于受保护的状态

作者:Nathan Harrington 来源:IBM 2007年9月10日

关键字: 传输 Thinkpad Linux

  • 评论
  • 分享微博
  • 分享邮件

用户空间关闭和动作检测

很多 IT 管理员都十分怀念能够随时获知硬件物理历史记录的功能。使用同一个简单的震动检测算法、一个 Perl 脚本和一种监视策略,管理员将能够更好地跟踪硬件的状态。例如,使用下面的 Perl 脚本在计算机遭到用户震动时平稳地关闭计算机。根据用户对 ThinkPad 的操作发送一封电子邮件、闪烁 “ThinkLight” 或播放一个声音文件,这些都可以轻松地完成。

#!/usr/bin/perl -w 
# shakeShutdown.pl - shutdown (or other command) 
when the computer is shakenuse strict;
my $file = "/sys/devices/platform/hdaps/position";
my $baseX = -5000;my $baseY = -5000;my $totalDev = 0;
if( @ARGV != 1 ){ die "specify a threshold value" }
my $devThreshold = $ARGV[0];my $dimShiftX = 150;
my $dimShiftY = 150;
while(1){ open(HD,"$file") or die "can't open file";  
my $line = <HD>;  chomp($line);  $line =~ s/\(//g;  
$line =~ s/\)//g;  $line =~ s/\,/ /g;  
my( $x, $y ) = split " ", $line;

清单 10. 用于检测震动的 Perl 脚本,第 1 部分

正如您所见,初始的程序设置几乎与 hdaps 内核代码完全相同。正则表达式和 split 命令仅将 x 值和 y 值从 (5,4) 更改为 5 和 4。程序的其余部分实质上也是相同的:

if( $x != 0 >> $y != 0 )  
{   if( $baseX == -5000 )   
{    $baseX = $x;    $baseY = $y;   }   
if( abs($baseX - $x) > $dimShiftX || abs($baseY - $y) > $dimShiftY )   
{    $totalDev += abs($baseX -$x);    $totalDev += abs($baseY -$y);    
$baseX = $x;    $baseY = $y;   }   
if( $totalDev > $devThreshold )   
{    print "threshold passed $totalDev\n";    
my $res=`/sbin/shutdown -h 1`;   
}  } 
close(HD);}

清单 11. 用于检测震动的 Perl 脚本,第 2 部分

请注意 shutdown -h 1 命令。这将给用户提供 60 秒的时间更改方法并发出关闭中止。更改此命令以运行您最喜欢的邮件程序,用户滥用设备时可以让系统管理员知道此情况。将消息记录到系统日志中,或让 PC 扬声器发出声响以便对获得的物理输入发出即时用户反馈。用 perl shakeShutdown.lp 1000 命令运行脚本。偏差阈值变得更小,因为加速度传感器的每次读取间隔与内核空间的每次读取间隔比较而言减少了。

修改空间移位参数和偏差阈值可以提供有益的对内核空间外部的物理活动的额外监视。例如,要采集 “行走” 行为的数据,需要将空间移位参数设为大约 20,并将偏差阈值设为大约 5000。这将检测到大约 63 个双坐标轴空间移位,这与膝上型计算机在处于运行状态时被放在典型的单肩背膝上型计算机包中的情况一致。检测到这种长距离行走后(不同于从办公位置到会议室的短距离行走),计算机将进入关闭程序以避免过热,因为空气在背包中不流通。修改空间移位参数使其具有高灵敏度,任何较大的撞击、坠落或震动都会被记录下来。

结束语

通过使用针对用户空间和内核级代码的这些简单算法,现在能够检测、记录和响应来自用户的各种物理输入。使用这些代码示例,从根据连续的加速度计算出来的高度修改硬盘性能参数,到丈量从办公位置到会议室的距离,并将其用邮件发送给空间规划师,您都可以应对自如。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章