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

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



Eric Pozharski -> debian-russian@lists.debian.org  @ Sat, 24 Mar 2007 10:50:44 +0200:

 EP> 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.

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

 EP> 2OP:

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

 EP> use strict;
 EP> use warnings;
 EP> use Fcntl;

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

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

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

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

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

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

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

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

Это какой-то очень сложный скрипт.  tcl был бы в этой роли куда проще.

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru

Нужны две программы - одна с интерфейсом, а другая чтобы работу делала.
	Victor Wagner в <aut24i$gct$1@wagner.wagner.home>



Reply to: