web-dev-qa-db-ja.com

Macでのtelnetログインとコマンドの自動化

現在、私は次のようなことをしています。

telnet 192.168.0.3 23

username

password

cd /dir/

programname -s -g dosomething

これを1つのステップで実行したいのですが、Automatorを使用してこのプログラムをコンパイルするのが最もクールですが、その方法がわかりません。
Automatorの「シェルスクリプト」がtelnet 192.168.0.3 23で失敗し、もちろん「接続が拒否されました」と表示されます。パスワードなどを入力する機会がありませんでした。

何か案は?

3
choise

Sshが利用できない場合、 expect は通常 telnetを使用した自動アクセス に使用されます。

リンクされた記事から:

#!/usr/bin/expect #Where the script should be run from.
set timeout 20 #If it all goes pear shaped the script will timeout after 20 seconds.
set name [lindex $argv 0] #First argument is assigned to the variable name
set user [lindex $argv 1] #Second argument is assigned to the variable user
set password [lindex $argv 2] #Third argument is assigned to the variable password
spawn telnet $name #This spawns the telnet program and connects it to the variable name
expect "login:" #The script expects login
send "$user " #The script sends the user variable
expect "Password:" #The script expects Password
send "$password " #The script sends the password variable
interact #This hands control of the keyboard over two you (Nice expect feature!)

次に、sshdがインストールされていない場合は、expectを使用してtelnetを自動化できます。おそらく、Macにインストールする必要があります。

Expectは、主にtelnet、ftp、passwd、fsck、rlogin、tipなどのインタラクティブアプリケーションを自動化するためのツールです。期待は本当にこのようなものを些細なものにします。 Expectは、これらのアプリケーションのテストにも役立ちます。多くの本、記事、論文、FAQに記載されています。 O'Reillyから入手できる本全体があります。

http://www.nist.gov/el/msid/expect.cfm を参照してください。

2
rems

192.168.0.3で実行されているシステムでsshdサーバーが実行されている場合は、次のようにすることができます。

ssh [email protected] 'cd /dir/ ; programmname -s -g dosomething'

192.168.0.3でsshdが実行されているかどうかを確認するには、試してみるか、すでに行っているようにtelnetを使用してログインし、unix/linux/maxosxの場合は

pgrep -fl sshd

または

ps -e | grep sshd

または

lsof -i :22

上記のすべては、何も見つからないか、sshdが実行されていることを示す行を表示します。

0
rems