在写shell脚本的过程中,我们经常碰到一些操作需要我们取实时指定一些参数,这就需要用到免交互了。免交互让我们的shell脚本更加强大。介绍几种免交互的方式1.管道符
不同命令间协调工作,位于 | 左侧命令的输出结果,将作为右侧命令的输入(处理对象)
例1 免交互修改账户密码
vim pswd.sh
#!/bin/bash
echo "Abc1357
Abc1357" | passwd --std
一、什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广
(一)sed是什么?sed是一个非交互式的文本编辑器,他可以对来自文本文件,以及标准输入的文本进行编辑,适用于较大的文本,且进行复杂的编辑工作。(二)sed的执行过程sed命令是从文件或者标准输入中一次性读取一行数据,将其复制到缓冲区,然后执行编辑命令对缓冲区的文本行进行编辑,重复此过程。流程如下图:(三)sed的使用 sed的一般命令形式为:sed 【options】 【 script】 【in
这是我的脚本:script.sh:sudo cat /etc/passwd-如果我在sudo会话中(例如我几分钟前用sudo运行了另一个命令),现在运行script.sh该脚本将获得sudo访问权限。 但是,如果我运行cat /etc/passwd-/,我将收到权限被拒绝错误。作为一个用户,我不希望script.sh能够如此简单地获得超级用户权限(例如,没有我使用sudo script.sh访问超
转载
2024-10-09 22:45:15
28阅读
前几天在写脚本的时候我有一个功能是想切换用户,让他自动输入密码。我觉得shell脚本实现不了,于是就上网查询, 发现expect脚本可以实现,但是一直没有试验,今天闲来没事就做一下测试。 1。首先确认expect的包要安置。 [[zhuying@SOR_SYS opt]$ rpm -qa | grep expect 如果没有则需要下载安装,我安装的是expect-5.4
转载
2024-09-23 18:36:46
320阅读
什么是bash shell脚本编程?答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell。至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件)。不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好;组合目的的单一的小程序完成复杂的任务。我觉得she
使用 expect 命令实现自动登录的脚本,网上有很多,可是没有一个清晰易懂,初学者大都是照抄、收藏,可是为什么要这么写却不知其然。米扑博客用一个最短的例子说明脚本的原理。脚本代码如下:#!/usr/bin/expect
set timeout 30
spawn ssh -l username 192.168.1.1
expect "password:"
send "ispass\r"
inter
夺命雷公狗---linux NO:27 linux下的密码管理和用户切换以及sudo的使用
我们在windows下用户名是可以设置空密码登录的,但是在linux 里面必须要设置一个密码才可以登录,否则会失败的。。。在linux 下设置密码可以使用 passwd 这个命令来进行设置。。。但是这里的 passwd &nbs
shell脚本 流程控制语句Shell提供了丰富的语句判断方式,包括数字,字符串和文件。数字:
1.运算符 说明
-eq 检测两个数是否相等,相等返回 true。
-ne 检测两个数是否不相等,不相等返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回
shell传递参数shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推其中,$0代表了要执行的文件名实例:代码如下:#!/bin/shecho "要执行的文件名是:$0"echo "第1个参数是:$1"echo "第2个参数是:$2"echo "第3个参数是:$3"执行结果如下:要执行的文件名是:./test.sh第1个参数是:1
转载
2024-10-08 13:23:48
31阅读
Linux脚本自动输入密码
#!/usr/bin/expect
set timeout 20
set password "12345678"
spawn /usr/bin/sudo su
expect "*password for xxx: "
send "$password\n"
interact
保存内容到一个文件中,如exp-demo.sh
chmod 0777 exp-demo.sh
然后
转载
2024-05-11 13:27:03
720阅读
一:条件测试 1:条件测试:命令test或者是 [ 但是 [ 通常与 ] 一起是使用 我们再来看看结果: 要分析这种现象必须的明确几个概念,在Shell中,一切都是指令,而test和[是起到条件判断的作用,在C语言中我们会根据返回值来判断条件语句是否成立,在Shell中我们是根据退出来判断条件语句的成立与否,这点和进程和线程十分相像,通常我们规定正常退出退出码为0(条件为真),否则(条件为假
一、简介
1.bash脚本是什么?
bash是一个为GNU计划编写的Unix shell。它是一些命令的堆积,配合简单的语法组成。
二、基础知识
1.脚本调试
1)bash -n /path/to/some_scripts 检测脚本语法错误 如:bash -n test.sh
2)bash -x /path/to/some_scripts 调试执行 如
1.获取路径及路径上的目录名获取路径名${}${var##*/} 该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。获取路径
$(readlink -f $(dirname $0)/../..)
$0是脚本运行的目录路径
转载
2024-09-30 08:12:15
80阅读
注: 1、目的:实现在每天2点将服务器上的数据库文件通过scp发送到另一台服务器,同时自动输入密码; 2、相关插件下载地址(expect + tcl 与本文配套):一、expect的安装expect是在tcl的基础上发展起来的,所以在安装expect之前务必要先安装tcl1、安装 tcl1、将下载的tcl安装包上传到服务器(tcl8.4.11为例)<下载链接在本文最上方> 2、按顺序执
转载
2024-08-01 21:47:33
437阅读
问题描述当我要在终端中安装程序时,需要输入密码:[sudo] password for xxx:但是,当我开始输入密码时,什么也没有发生。我该怎么办?最佳解决办法即使您输入密码时没有字符出现,您实际上也在输入密码。因此,输入密码,然后点击Enter并查看魔术。次佳解决办法出于安全原因,在终端中没有密码反馈。阅读以下有关此问题背后原因的讨论以及为何不执行此问题:在此讨论中,还给出了superuser
转载
2024-03-11 12:08:52
4246阅读
使用expect实现自动登录的脚本网上有很多可是都没有一个明白的说明初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下 ##############################################
#!/usr/bin/expect
set timeout 30
spawn ssh -
转载
2024-05-12 17:41:42
848阅读
前言: 添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现? 这篇短文, 简单讲解一些思路, 尽可能地涉及周边的一些知识点. 不光是运维人员会面临这个问题, 对一个基于linux平台的集群服务或软件(比如hadoop集群), 有时也会涉及到这块.应用场景: 是以centos 6.4作为演示的系统, 其他的系统有类同, 也有差异, 且以实战演练, 一步
输入输出的操作使用#!/bin/bash
# 输入/输出重定向
# 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
# 需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错
转载
2024-04-17 14:29:02
323阅读
这里提供三个生成随机密码的脚本,两个是shell脚本,一个是python脚本。先来看第一个shell脚本:1 [root@sv7 ~]# vim suiji.sh脚本内容:#!/bin/bashtr -dc 'A-Za-z0-9' < /dev/urandom | head -c 8echo //echo后不是没有内容,而是一个空格。目的是让随机密码和[root@sv7 ~]#折行