假如在A机器上要调用C机器上的shell(程序),如何处理。主要涉及到交互等
直接telnet是可以的,但是如何写到shell脚本里呢
cat conf.txt | telnet 这样不行
上网查询了下,还没有做测试,先放到这里
1.
作者:meteor06 出处:Unix爱好者家园unix-cd.com
( sleep 2
echo "user";
sleep 2
echo "passwd"
sleep 4
echo "ls";
sleep 20
echo "exit";
) | telnet ip
这个shell里面user ,passwd ,ip 都要用实际的参数来替换
ls 可以换成其他命令
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/shell/shelljs/200862/119918.html
2.
http://www.chinaunix.net 作者:panlm 发表于:2005-04-11 12:36:36 |
【发表评论】【查看原文】【Shell讨论区】【关闭】 |
自动输入用户名和密码用于tenlnet的shell, 哈哈
用linux的朋友且经常用配置路由器的可有福了. :)
今天刚刚完成, 大家多提意见 :)
#===========autotelnet.sh============== #!/bin/bash if (( $# != 1 )) then echo " usage: $0 address " exit 1 fi ip=$1 inp1=`cat param |grep "$ip" |awk '{ print $2 }'` inp2=`cat param |grep "$ip" |awk '{ print $3 }'` inp3=`cat param |grep "$ip" |awk '{ print $4 }'`
inputfile=in outputfile=out rm -fr $inputfile rm -fr $outputfile mknod $inputfile p touch $outputfile
#file description 7 for out and 8 for in exec 7<>$outputfile exec 8<>$inputfile
telnet $ip <&8 >&7 &
sleep 1; echo $inp1 >> $inputfile sleep 1; echo $inp2 >> $inputfile sleep 1; echo $inp3 >> $inputfile
tail -f $outputfile &
while true do read str if [[ $str = "quit" || $str = "exit" ]] then echo $str >> $inputfile ; exit else echo $str >> $inputfile fi done #==================================
参数文件, 输入在出现正常提示符之前需要输入的所有内容, 用空格分开, 以ip地址或者hostname开头 #=====param============ localhost root password
#===================== 这个例子的原理就是 建立一个管道文件,$inputfile 建立一个临时文件,$outputfile 分别作为 telnet 程序的输入输出。
然后以后再向 $input 中写的东西 就会传递个 telnet 的标准输入。
mknod filename p 用于创建管道文件。
tail -f outputfile 用于不断打印telnet 的输出。
-f 得选项很有用,一个文件 变长了之后,他会自动把文件增加的内容打印出来。 用来调试程序的日志文件输出很好用。
exec 7<>filename
把file descriptor 7 ,做为打开文件 filename 。
以后的子进程都会继承父进程所打开的FD
所以 telnet <&8 >&7 才起作用。
关于 File descriptor 还有输入输出重定向, 在刚刚的网中人和 admirer精华贴中说得非常好。
http://www.chinaunix.net/forum/viewtopic.php?t=191375
叹服于 Unix 中 file, pipe, IO redirect 的设计思想。
简单,易懂,强大。 3 服务器端: apt-get install ssh
编辑/etc/ssh/sshd_config #ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024
ServerKeyBits 1024 ← 修改后变为此状态,将ServerKey强度改为1024比特
PermitRootLogin yes ← 找到这一行,将行首的“#”去掉,并将yes改为no
PermitRootLogin no ← 修改后变为此状态,不允许用root进行登录
PermitEmptyPasswords no ← 找到此行“#”删除,不允许空密码登录
PermitEmptyPasswords no ← 修改后变为此状态,禁止空密码进行登录
#PasswordAuthentication yes ← 找到这一行,将yes改为no
PasswordAuthentication no ← 修改后变为此状态,不允许密码方式的登录
以普通用户的身份建立公钥和私钥: ssh-keygen -t rsa 然后要求你确认钥匙的文件名(用默认的就好了);输入口令;再次输入口令。
在~/.ssh/下会生成公钥id_rsa.pub和私钥id_rsa
更改公钥文件名:mv id_rsa.pub authorized_keys 设置文件属性:chmod 400 authorized_keys
重启ssh服务:/etc/init.d/ssh restart
将私钥id_rsa移动到客户机端
客户机端: apt-get install ssh mkdir ~/.ssh/ chown user:user ~/.ssh/ chmod 700 ~/.ssh/ 将私钥文件移动到~/.ssh/中 chown root:root ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa | |