2011-12-09 40 views
5

Tôi không thể chạy "sudo su" trên máy khách ec2 của mình, tôi ssh vào máy khách thông qua chương trình java và chạy lệnh thông qua chương trình. Mặc dù vậy, tôi có thể chạy các lệnh như "ls" và "ifconfig".Để chạy lệnh sudo trên ví dụ ec2

Tôi gặp lỗi "sudo: xin lỗi, bạn phải có một tty để chạy sudo".

Làm cách nào để chạy lệnh, tôi đang sử dụng Jsch cho ssh cho cá thể ec2 của mình.

Trả lời

4

Dường như theo mặc định Jsch không phân bổ một giả-tty cho phiên từ xa - điều này có thể phá vỡ một số chương trình mong đợi để được chạy tương tác. Có vẻ như bạn có thể sử dụng hàm ChannelExec.setPty để yêu cầu một pty - nhưng tôi đã không làm việc với Jsch và không thể tự mình kiểm tra điều này.

+0

Tôi sẽ cố gắng! –

+0

nó hoạt động, cảm ơn bạn !! –

+0

Chỉ cần lưu ý: Tôi đã tạo một số Javadocs cho JSch, bạn có thể muốn liên kết http://epaul.github.com/jsch-documentation/simple.javadoc/com/jcraft/jsch/ChannelExec.html#setPty(boolean) thay thế . –

6

Bạn có thể thực hiện "sudo" mà không cần giả mạo với JSch, bằng cách sử dụng tùy chọn -S để sudo.

Xem Sudo.java trên trang web JSch để biết ví dụ hoàn chỉnh.

(Tôi là tác giả của JSch.)

Các vấn đề liên quan