当前位置:首页 » 编程软件 » ubuntushell脚本

ubuntushell脚本

发布时间: 2023-07-06 05:31:30

㈠ 如何用shell脚本实现ubuntu用户自动登录

安装
CentOS下安装命令很简单,如下
sudo yum install expect

至于Mac用户,可以通过homebrew安装(需要先安装homebrew,请自行Google)
brew install expect

测试脚本
我们写一个简单的脚本实现scp拷贝文件,在脚本里配置密码,保存为scp.exp如下
#!/usr/bin/expect
set timeout 20

if { [llength $argv] < 2} {
puts "Usage:"
puts "$argv0 local_file remote_path"
exit 1
}

set local_file [lindex $argv 0]
set remote_path [lindex $argv 1]
set passwd your_passwd

set passwderror 0

spawn scp $local_file $remote_path

expect {
"*assword:*" {
if { $passwderror == 1 } {
puts "passwd is error"
exit 2
}
set timeout 1000
set passwderror 1
send "$passwd\r"
exp_continue
}
"*es/no)?*" {
send "yes\r"
exp_continue
}
timeout {
puts "connect is timeout"
exit 3
}
}

注意,第一行很重要,通常我们的脚本里第一行是#!/bin/bash,而这里是你机器上expect程序的路径,说明这段脚本是由expect来解释执行的,而不是由bash解释执行,所以代码的语法和shell脚本也是不一样的,其中set passwd your_passwd设置成你自己的密码,然后执行如下命令
./scp.exp ./local_file user@host:/xx/yy/

执行前确保scp.exp有执行权限,第一个参数为你本地文件,第二个为远程主机的目录,运行脚本如果报错“connect is timeout”,可以把超时设长一点,第二行set timeout 20可以设置超时时间,单位是秒。脚本执行效果如下

还能做什么
细心的同学一定发现了,其实expect提供的是和终端的一种交互机制,输入密码只是其中一种应用形式,只要是在终端阻塞需要输入时,都可以通过expect脚本完成自动输入,比如前面脚本里配置了两种交互场景,一种是终端提示"password:"时输入密码,还有一种是提示"yes/no)?"时输入“yes”,如果和远程主机是第一次建立连接,执行scp.exp脚本效果是这样的

所以我们可以根据终端的提示来配置输入命令,这样就能达到了自动化的效果。至于处理其它交互场景,只需要照着上面的脚本依葫芦画瓢就行了

㈡ shell脚本执行source报错

在Ubuntu 16.04机器在执行shell脚本时,报source: not found
原因是shell脚本执培困行的时候配稿念用的不是bash,而是dash,可以使用下面方法修改。

出现对话框后,选择no,再查看一次

重新执行脚本敬塌,问题解决

㈢ 【tips】Ubuntu 两种开机自启动程序方式

个人制档链作的程序可以添加到开机自启动项中,简便一些流程,以下列出两种方式

方式一

 卜蠢雹   第一种方式比较简单,通过Ubuntu 自带的Startup Applications即可添加,只要选中路径下的可执行文件即可。

方式二

    通过Shell脚本+rc.local实现

    step 01 创建一个脚本文件,比如起名为run_start.sh

    step 02 修改rc.local文件,在exit 0之前添加执行脚本文件的命令

这两种方式,都会在开机时启动相应的程序。

当然,还有很多其他的启动三方程序型帆的方式,目前没有一一尝试,仅举两例。    

㈣ ubuntu怎么保存shell脚本文件

ubuntu怎么保存shell脚本文件
ubuntu保存shell脚本文件
第一步:用vim创建一个以.sh结尾的文件,此时这个文件是暂时性的文件,当编写好文件并保存时才能看到文件;
第二步:要首先按一下“i”键才能进行插入(编写)模式,文件开头要写一段特殊符号,“#!/bin/bash” ,这个是开头文件的要求;
第三步:可以开始写里面的内容了,其中可以使用 # 作为单行注释的符号,用 “:<<! !”,作为多行注释的符号;在这里插入图片描述
第四步:编写完语句之后按一下esc键,然后再按冒号键进入最后一行,然后在按“wq”键进行保存,在运行前要使用 “chmod”进行修改权限,具体的指令为“chmod 777 a.sh”;
查看更多

㈤ 在Ubuntu下编写shell脚本读取文件

需求功能:

创建测试用例文件 text :

创建shell脚本:

运行结果:

利用 awk 'END{print NR}' [文件名] 来输出行数:

在shell脚本中添加该功能:

运行结果:

上面的shell文件只是把文件名写死在脚本中,并没有实际使用意义,所以需要编写一个指令来指定需要读取的文件,就像 vim [文件名] 一样

“$1” 代表第1个参数,也就是在 read 之后紧跟的参数,将其作为文件名传入:

将脚本移动至环境变量对应的目录中:(可以自己更改 /bin/xxx 来决定运行命令的名称,但注意不能重复)
sudo mv read /bin/read
然后添加运行权限:
sudo chmod 755 /bin/read

打开终端的目录可以是任何位置,通过以下命令即可运行shell脚本:
sudo read [文件路径]

同理,我们还可以自己为复杂指令编写shell脚本,来提高命令的使用效率,例如开关ss服务,打开锐捷客户端认证等等。

热点内容
芒果tv缓存的视频在哪个文件里 发布:2025-02-07 16:45:05 浏览:813
php邮件群发 发布:2025-02-07 16:45:05 浏览:612
mysql数据库基本语句 发布:2025-02-07 16:41:48 浏览:249
医院门禁密码多少 发布:2025-02-07 16:41:43 浏览:527
服务器遭美国ip攻击签名 发布:2025-02-07 16:22:48 浏览:546
如何配置二良腌料 发布:2025-02-07 16:11:54 浏览:735
数据库课程设计学生管理系统 发布:2025-02-07 16:11:50 浏览:764
美国文化密码是什么 发布:2025-02-07 16:07:14 浏览:261
安卓手机下雪特效怎么p 发布:2025-02-07 15:49:30 浏览:319
轮胎存储铭牌 发布:2025-02-07 15:43:38 浏览:74