社区
Linux/Unix社区
帖子详情
请教一个shell脚本的编写
lovesql114
2007-11-12 08:07:15
请问下面这一系列操作能不能用一个shell脚本来实现:
telnet连接一台主机;
输入用户名、密码;
连接上主机后进入某个目录;
在该目录下新建个目录。
telnet命令和身份验证是在一个终端进程,创建目录是在另个进程了吧?
请问怎样用一个shell脚本来实现。
先谢谢大家~~~
...全文
353
9
打赏
收藏
请教一个shell脚本的编写
请问下面这一系列操作能不能用一个shell脚本来实现: telnet连接一台主机; 输入用户名、密码; 连接上主机后进入某个目录; 在该目录下新建个目录。 telnet命令和身份验证是在一个终端进程,创建目录是在另个进程了吧? 请问怎样用一个shell脚本来实现。 先谢谢大家~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fengdkm
2007-11-13
打赏
举报
回复
刚才突然想到,对第二个问题,我没太明白你的意思,说下我的理解。如果把当前终端的shell看作父:
1.在终端执行一个sh脚本,是先fork,然后exec一个shell,用来执行这个脚本。
父->shell
2.在终端用source命令执行sh脚本(或者是用.执行脚本),表示在当前shell执行。没有子shell
3.在终端执行一个程序,比如telnet,是先fork,然后exec执行这个程序。
父->telnet
4.如果在一个sh脚本里,包含telnet命令,那么就是上面的两个结合:
先fork,exec一个shell,执行相关内部命令,遇到外部命令,比如telnet时,就再fork,exec执行这个外部程序。
父->shell->telnet
不知道你说的“父进程和子进程的命令可以由一个脚本来实现”中的父子,是不是指上面4中的“shell->telnet”这两个?如果是,那么“最典型的是ftp自动登录的脚本”就是指这个。
如果是指上面的2中的情况,那就用.执行。
fengdkm
2007-11-13
打赏
举报
回复
1、你搜下,看能找到不能,我找到两个:
http://www.linuxsir.org/bbs/archive/index.php/t-55913.html
里面讲到了两种方法。不过我验证。你可以分别试下。
http://unix-cd.com/unixcd12/article_775.html
里面有个相对完整的脚本。
2、可以在一个脚本实现,不过子进程的命令,都要想办法传进去,要么用匿名管道传递进去,要么用expect。
最典型的是ftp自动登录的脚本。
lovesql114
2007-11-13
打赏
举报
回复
谢谢fengdkm
expect是要安装的吧?
因为我这一系列操作是想封装成一个脚本由一个Java程序调用的,不能保证每个客户端都有expect。
另外我是想知道终端下很多命令都会启动进入一个子进程,如比telnet,minicom,tftp等,父进程和子进程的命令可以由一个脚本来实现吗?
sqllong
2007-11-13
打赏
举报
回复
小牛牛;
lovesql114
2007-11-13
打赏
举报
回复
非常谢谢大家的回复.
expect是个好方法,但是因为我不能保证每个客户端上都有expect,所以还是想用一般的shell脚本来实现.
回5楼fengdkm:
我是这样想的:
打开一个终端,在里面输入cd , ls这些命令,控制权都还在这个终端里,定义它为父shell;
然后比如输入tftp 192.168.1.2这个命令,当前终端会显示tftp>
这时再输入cd,ls这些命令就没用了,我觉得现在已经是进入tftp这个子shell了,可以在tftp>提示符后输入get filename命令下载文件
然后要输入quit命令,控制权才回到父shell.
操作大概显示如下:
[root@RTOS root]#cd /home/lxy
[root@RROS lxy]#tftp 192.168.1.2
tftp> get download_file
tftp> quit
[root@RTOS lxy]#ls download_file
我觉得cd,tftp,ls这三个命令是父进程,get,quit这两个命令是子进程.
另外我本来也要写个脚本就是实现上面这一系列操作,一直没搞明白怎么把那五个命令弄到一起,模仿zhiqiu的那个脚本这样写:
#!/bin/sh
cd /home/lxy
tftp 192.168.1.2 << EOF
get download_file
quit
EOF
ls
就OK了
非常感谢zhiqiu
human3000
2007-11-13
打赏
举报
回复
参考我这个吧,这是个expect的shell程序...
#!/usr/bin/expect --
set timeout 60
spawn /usr/bin/telnet 1.1.1.2
expect "login:"
send "abc\r"
expect "Password:"
send "1111\r"
expect "abc"
send "su\r"
expect "Password:"
send "1111\r"
interact
回炉重造,学习编程中。。。
2007-11-13
打赏
举报
回复
expect就可以实现的.
或者用类似的方法实现
#!/bin/sh
ftp -i -v -n ftp.example.com <<EOF
user anonymous
cd pub
put upload_file
bye
EOF
fengdkm
2007-11-12
打赏
举报
回复
就是一个自动登录脚本,有个程序是“专门”做这个的:expect。
我没telnet环境,写了个ssh的。你自己模仿看看吧,很简单的,我也是昨天刚接触expect。
新建个文件比如testssh.sh,内容如下:
#!/usr/bin/expect
spawn ssh linkage@主机地址
expect "password:"
send "帐号的密码\r"
expect "]$"
send "cd 需要进的目录 && mkdir 新建的目录名\r"
expect "]$"
close
wuyuanzhe
2007-11-12
打赏
举报
回复
才疏学浅,确实没见过用一个脚本实现的
不过用两个脚本或者用ant脚本倒是可以很容易实现
Linux下
Shell
脚本
中几种基本命令的替换区别
最近因为工作需要,需要
编写
shell
脚本
。
编写
大量
shell
脚本
时,累计了大量经验,也让自己开始迷糊几种函数输出调用的区别。后面和前辈们
请教
了一下这个问题,大致明白了区别。这里分享给大家,希望对大家能有所收获。...
shell
脚本
命令
编写
面试题目
一个
文本类型的文件,里面每行存放
一个
登陆者的IP(某些行是重复的),写
一个
shell
脚本
输出登陆次数最多的用户。 PS:当时没有做出来,前段时间我再次学习
shell
脚本
的时候想到了一种方法可以求解,但是感觉有点麻烦...
Shell
脚本
编写
实战
根据实际的案例讲解怎么
编写
Shell
脚本
,在什么场景下
编写
为讲解导向。 课程内容如下: 1.
编写
Shell
脚本
注意事项与
编写
打印字体颜色函数 2.批量创建用户 3.监控主机存活状态 4.监控CPU、内存、硬盘和网卡流量利用率 5...
ue
编写
linux
脚本
,通过什么工具
编写
shell
脚本
更方面直观
刚开始学习写
shell
脚本
,现在主要是通过vi编辑器,但感到很不方便和直观。通过UtralEdit倒是方便但不直观,比如
shell
编程中的关键字不能醒目出来。想
请教
一下各位大虾,有没有这么类似于像vc那样的编辑器可以直观的...
shell
脚本
基础知识-正则表达式
如果你这部分内容学的越好,那么你的
shell
脚本
编写
能力就会越强。所以不要嫌这部分内容啰嗦,也不要怕麻烦,要用心学习。一定要多加练习,练习多了就能熟练掌握了。 在计算机科学中,正则表达式是这样解释的:它是...
Linux/Unix社区
23,116
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章