cannot open /dev/tty: No such device or address

Steve Butler sbutler at fchn.com
Wed Oct 29 13:45:03 CET 2003


There is a similar error message when driving gpg from cron.  Try the
--no-tty option.

-----Original Message-----
From: Asier Urrutia [mailto:asier at alphyra.ie]
Sent: Wednesday, October 29, 2003 1:00 PM
To: gnupg-users at gnupg.org
Subject: gpg:cannot open /dev/tty: No such device or address


Hi all,

	I've built a perl script in order to parse a mailbox, save
attachments from emails and decrypt them. If I run the perl script from a
shell...

bash$ cat mailbox | mbox-parser.pl
Reading passphrase from file descriptor 11

You need a passphrase to unlock the secret key for
user: "GPG user (GPG user's key) <gpg-user at domain.com>"
1024-bit ELG-E key, ID D49D1DBC, created 2003-10-28 (main key ID 7724AA8E)
bash$
	
	...it works fine. However, I am unable to get rid of the gpg
passphrase output. I tried to redirect STDOUT to a log file, but doesn't
make any difference.

	The main problem is when I pipe mail to this perl script from
procmail:

bash$ cat .procmailrc
LOGFILE=/home/user/maillog
:0 HB : user.procmail.lock
* ^To:.*user at localhost.localdomain
| /home/user/bin/mbox-parser.pl
bash$

	then, the script doesn't work due to the following error msg:

gpg: Warning: using insecure memory!
gpg: cannot open /dev/tty: No such device or address

	which looks to me that the gpg passphrase output is being sent to 
a terminal, but can't be found any and it fails. I'll enclose here the 
subroutine I'm using on the decryption, just in case somebody wants to 
know what I'm doing...

begin-------------------------------------------
sub decrypting
{

  my $attachment  = $_[0];

  my $gnupg = GnuPG::Interface->new();

  $gnupg->options->hash_init( armor    => 1,
                              recipients => [ 'tj-cl-testing at alphyra.ie' ]
                            );

  my ( $input, $output, $error, $passphrase_fh, $status_fh )
    = ( IO::Handle->new(),
        IO::Handle->new(),
        IO::Handle->new(),
        IO::Handle->new(),
        IO::Handle->new(),
      );

  my $handles = GnuPG::Handles->new( stdin      => $input,
                                     stdout     => $output,
                                     stderr     => $error,
                                     passphrase => $passphrase_fh,
                                     status     => $status_fh,
                                   );

  my $cipher_file = IO::File->new( "$attachment" );
  my $pid = $gnupg->decrypt( handles => $handles );

  print $passphrase_fh $passphrase;
  close $passphrase_fh;
  print $input $_ while <$cipher_file>;
  close $input;
  close $cipher_file;

  my @plaintext    = <$output>;   # reading the output
  my @error_output = <$error>;    # reading the error
  my @status_info  = <$status_fh>; # read the status info

  open(LOGFILE,">>$DECRLOG");
  my $date = `date`;
  chomp($date);
  print LOGFILE "\n$date -- $attachment decryption 
logging...\n=============================\n";
  print LOGFILE @error_output;
  print LOGFILE @status_info;
  close(LOGFILE);

open (SAVE,">$ATTACHLOC/$ATTACHMENT.decrypted");
print SAVE @plaintext;
close(SAVE);
  # clean up...
  close $output;
  close $error;
  close $status_fh;

  waitpid $pid, 0;  # clean up the finished GnuPG process

}
end------------------------------------------------------


	Anybody came across something like this?

Thanks a million,
Asier
	


_______________________________________________
Gnupg-users mailing list
Gnupg-users at gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-users


CONFIDENTIALITY NOTICE:  This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information.  Any unauthorized review, use, disclosure or distribution is prohibited.  If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.




More information about the Gnupg-users mailing list