現在、私は次のようなことをしています。
telnet 192.168.0.3 23
username
password
cd /dir/
programname -s -g dosomething
これを1つのステップで実行したいのですが、Automatorを使用してこのプログラムをコンパイルするのが最もクールですが、その方法がわかりません。
Automatorの「シェルスクリプト」がtelnet 192.168.0.3 23
で失敗し、もちろん「接続が拒否されました」と表示されます。パスワードなどを入力する機会がありませんでした。
何か案は?
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 を参照してください。
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が実行されていることを示す行を表示します。