# Expecr error help!

**URL:** <https://www.ruby-forum.com/t/expecr-error-help/192806>\
**Category:** Ruby\
**Created:** [August 5, 2010, 11:00pm UTC](https://www.ruby-forum.com/t/expecr-error-help/192806 "2010-08-05T23:00:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![bloodniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bloodniece](https://www.ruby-forum.com/u/bloodniece)\
**Post date:** [August 5, 2010, 11:00pm UTC](https://www.ruby-forum.com/t/expecr-error-help/192806/1 "2010-08-05T23:00:35Z")

</div>

Hi Ruby folks!

Any ideas? Output and error is below at **OUT**  
Also I am fairly new to Ruby…coming from Perl, so what does the  
w\_f.sync do?  
thank u!

#!/usr/bin/env ruby -w

require ‘pty’  
require ‘expect’

DN = “/usr/local/bmc/controlm/ctmagt/ctm/scripts/shut-ag”  
UP = “/usr/local/bmc/controlm/ctmagt/ctm/scripts/start-ag”

STDOUT.sync = true  
STDERR.sync = true  
$expect\_verbose = true  
prompt\_pat = %r/^\sEnter CONTROL-M.\*/m

if ARGV.empty?  
$stderr.puts “A argument of -stop or -start is required, bye!”  
exit 1  
end

if ARGV[0] == ‘-stop’  
Dir.chdir("/usr/local/bmc/controlm/ctmagt/ctm/scripts")  
puts Dir.pwd  
puts “\nNow shutting down controlM, please wait…\n”  
PTY.spawn("#{DN}") do |w\_f|  
w\_f.sync = true  
w\_f.expect(prompt\_pat){ w\_f.puts “ctmagt” }  
w\_f.expect(prompt\_pat){ w\_f.puts “ALL” }  
end  
end

**OUT**

# ruby cntrlM\_recycle.rbx -stop

/usr/local/bmc/controlm/ctmagt/ctm/scripts

Now shutting down controlM, please wait…  
open: pty slave: No such file or directory

---

<div class="post-metadata">

**Author:** ![bloodniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bloodniece](https://www.ruby-forum.com/u/bloodniece)\
**Post date:** [August 6, 2010, 9:56am UTC](https://www.ruby-forum.com/t/expecr-error-help/192806/2 "2010-08-06T09:56:32Z")

</div>

Derek S. wrote:

> Any ideas? Output and error is below at **OUT**

What platform are you on - operating system type and version, ruby type  
and version?

> Also I am fairly new to Ruby…coming from Perl, so what does the  
> w\_f.sync do?

same as autoflush() in Perl

---

<div class="post-metadata">

**Author:** ![bloodniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bloodniece](https://www.ruby-forum.com/u/bloodniece)\
**Post date:** [August 6, 2010, 7:23pm UTC](https://www.ruby-forum.com/t/expecr-error-help/192806/3 "2010-08-06T19:23:47Z")

</div>

Brian C. wrote:

> Derek S. wrote:
> 
> > Any ideas? Output and error is below at **OUT**
> 
> What platform are you on - operating system type and version, ruby type  
> and version?
> 
> > Also I am fairly new to Ruby…coming from Perl, so what does the  
> > w\_f.sync do?
> 
> same as autoflush() in Perl

# ruby -v

ruby 1.8.7 (2009-04-08 patchlevel 160) [hppa2.0w-hpux11.23]  
root@blight [/home/xxxx/scripts/ruby]

# uname -a

HP-UX blight B.11.23 U 9000/800 1162444665 unlimited-user license

ok thank you!

---

<div class="post-metadata">

**Author:** ![bloodniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bloodniece](https://www.ruby-forum.com/u/bloodniece)\
**Post date:** [August 6, 2010, 7:58pm UTC](https://www.ruby-forum.com/t/expecr-error-help/192806/4 "2010-08-06T19:58:28Z")

</div>

I even tried the passwd command code copied from this site in someone  
else’s post and I get a similar error:

# ruby -d cntrlM\_recycle.rbx

Exception `LoadError' at /opt/iexpress/rubyrails/lib/ruby/site_ruby/1.8/rubygems.rb:1113 - no such file to load -- rubygems/defaults/operating_system Exception`LoadError’ at  
/opt/iexpress/rubyrails/lib/ruby/site\_ruby/1.8/rubygems/config\_file.rb:50

- no such file to load – Win32API  
Exception `NoMethodError' at /opt/iexpress/rubyrails/lib/ruby/1.8/rational.rb:78 - undefined method`gcd’ for Rational(1, 2):Rational  
Old password:test

New password:scifi  
open: pty slave: Is a directory

**CODE**

#!/usr/bin/env ruby -w

require ‘pty’  
require ‘expect’

```
    print 'Old password:'
    old_pwd = gets.chomp

    print "\nNew password:"
    new_pwd = gets.chomp

    PTY.spawn('/usr/bin/passwd katty') do |read,write,pid|

      write.sync = true
      $expect_verbose = false

      # You can use regular expressions instead of strings. The code 

```

block  
# will give you the regex matches.  
read.expect(/Changing password for katty\nNew password: /, 5)  
do |response, \*matches|

```
        write.print new_pwd + "\n" if response
      end

      # The default value for the timeout is 9999999 seconds
      read.expect("Re-enter new password:") do |response|
write.puts new_pwd + "\n" if response

      end
    end
```

---

<div class="post-metadata">

**Author:** ![bloodniece](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bloodniece](https://www.ruby-forum.com/u/bloodniece)\
**Post date:** [August 6, 2010, 11:05pm UTC](https://www.ruby-forum.com/t/expecr-error-help/192806/5 "2010-08-06T23:05:00Z")

</div>

Derek S. wrote:

> HP-UX blight B.11.23 U 9000/800 1162444665 unlimited-user license

Then it looks like the PTY library doesn’t work properly under HP-UX. If  
you can make a small test case which works under Linux but fails under  
HP-UX, then you can take it to ruby-core or [redmine.ruby-lang.org](http://redmine.ruby-lang.org)
