[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Чем достучаться до модема из текстовой консоли?



On Fri, Mar 23, 2007 at 09:21:11PM +0300, Artem Chuprina wrote:
> Peter Teslenko -> debian-russian@lists.debian.org  @ Fri, 23 Mar 2007 21:14:26 +0300:
>  PT> Чем можно достучаться до модема из консоли при отсутствии cu и
>  minicom'а?
> Перловым скриптом.  Тикловым скриптом.  В ограниченных пределах - даже
> cat.

Пан биэсдишник?  Стыдитесь.  (me это к тому, что надо тогда, хотя бы, в
perlopentut ткнуть).

2OP:

=== contents (/usr/local/sbin/do.dip) goes below ===
#!/usr/bin/perl

use strict;
use warnings;
use Fcntl;

my $NL = "\015";
my $LF = "\012";
my $ttys = shift(@ARGV);

$ttys =~ m#.*/([^/]+)#;
my $lock = qq(/var/lock/LCK..$1);

sysopen(TTYLOCK, $lock, O_WRONLY | O_EXCL | O_CREAT) or
  die qq(can't UUCP-lock $ttys: $!\n);
syswrite(TTYLOCK, sprintf(qq(%10s\n), $$)) or
  die qq(can't fill UUCP-lock: $!\n);
close(TTYLOCK);
sysopen(TTYSI, $ttys, O_RDWR | O_NDELAY | O_NOCTTY) or
  die "can't open $ttys (reading): $!\n";
sysopen(TTYSO, $ttys, O_WRONLY | O_NDELAY | O_NOCTTY) or
  die "can't open $ttys (writing): $!\n";
#my $foo = select(TTYSO); $| = 1; select($foo);

while(@ARGV) {
    print(TTYSO shift(@ARGV), $NL);
    sleep(1);
    #$/ = '';
    print(STDOUT <TTYSI>);
};
close(TTYSO) or
  die "can't close $ttys (writing): $!\n";
close(TTYSI) or
  die "can't close $ttys (reading): $!\n";
unlink($lock);

exit;
=== contents (/usr/local/sbin/do.dip) gone above ===

=== contents (/usr/local/sbin/do.dip /dev/ttyS0 'AT' 'ATI1' '') goes below ===
AT
OK
ATI1
87D3

OK
=== contents (/usr/local/sbin/do.dip /dev/ttyS0 'AT' 'ATI1' '') gone above ===

Скрипт тупой до безобразия, поэтому надо иногда (всегда?) добавлять
заглушку (терминатор!?)

-- 
Torvalds' goal for Linux is very simple: World Domination



Reply to: