Solved

plink => su: must be run from a terminal

Posted on 2013-06-05
8
2,903 Views
Last Modified: 2013-06-06
Hello,

I need to reboot a linux server from Windows.

My script doesn't work.

reboot.bat
echo n | putty -ssh -t -noagent  %LOGIN%@%IP% -pw %PASSWORD% -m localshell.sh

Open in new window

localshell.sh

#!/bin/bash 
echo 123456 | su - reboot
ping 127.0.0.1

Open in new window


I can't change linux parameters.
PermitRootLogin No
My user isn't sudoers

i have root password & user password

Thanks for your help !
0
Comment
Question by:PepperRed
  • 2
  • 2
  • 2
  • +2
8 Comments
 
LVL 68

Expert Comment

by:woolmilkporc
Comment Utility
It's

su -  -c reboot

ping ... in your script is useless, it will not be processed after "reboot"

What should these "echo n"  and "echo 123456" be good for?

Finally. I assume you meant to write "plink" instead of "putty" in the code you posted?
0
 
LVL 21

Expert Comment

by:Mazdajai
Comment Utility
I don't think you can pass in plain text for password with su.

Any reason why you are not using sudoer? You can pass in a password argument with plink if you have sudoer setup. One line in batch. For example -

plink -pw bad user@server sudo /usr/bin/reboot
0
 
LVL 19

Expert Comment

by:simon3270
Comment Utility
I assume that the "echo 123456" in localshell.sh is for the root password.  Couple of problems with that - su doesn't read the password from stdin, and it can't be run in a pipeline like that.

You need to use expect:
expect <<EOF
spawn su - -c reboot
expect sword
send "123456\r"
expect eof
EOF

Open in new window

0
 

Author Comment

by:PepperRed
Comment Utility
ping command is just to see the error "su: must be run from a terminal"

With plink or putty in my script, the error is the same.

Don't use sudoer is my company policy.

I try su - -c reboot but : "su: must be run from a terminal"

As Mazdajai say it, i think i can't pass in plain text for password with su.

Do you know an other method to reboot a linux from Windows with my constraints

Thanks
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 21

Expert Comment

by:Mazdajai
Comment Utility
Passing plaintext password with su is the problem. I don't see this is possibile with your contriant.
0
 
LVL 34

Accepted Solution

by:
Duncan Roe earned 200 total points
Comment Utility
This is the classic problem that expect was designed to solve. There is a version of expect for Windows, but it's not free and I don't remember the URL - Google will find it.
However - and this is free - expect is supported under Cygwin.
So if you install Cygwin and be sure to include expect (not part of the minimal install) then you can write an expect script to do what you want. Post back if you need help in writing the script.
0
 
LVL 68

Expert Comment

by:woolmilkporc
Comment Utility
Back to the original issue ("su: must be run from a terminal"):

The "-t" flag of plink (not putty!) should take care of allocating a pseudo tty.

Apart from all the other good suggestions above: "su - -c ..." should work and ask you for a password if you really used "plink" and its "-t" flag.
Try without "echo 123456 | "  (If you're still interested, that is).
0
 

Author Comment

by:PepperRed
Comment Utility
I try yours differents solutions with no success and finally i have success with expect script.

My expect script which i launch from a batch :

RebootLinux.exp

expect <<EOF
spawn "C:\\Program Files\\PuTTY\\plink.exe" -ssh -t -noagent  test@192.168.12.345 -pw password

expect sword
send "su -\r"
       expect {
           "Password: " {send "123456\r"}
       }
expect sword
send "reboot\r"

expect eof

Open in new window


Thanks all
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Whether you believe the “gig economy,” as it has been dubbed, is the next big economic paradigm shift (https://www.theguardian.com/commentisfree/2015/jul/26/will-we-get-by-gig-economy) or an overstated trend (http://www.wsj.com/articles/proof-of-a-g…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now