问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在脚本里面自动输入密码

发布网友 发布时间:2022-04-13 15:48

我来回答

2个回答

懂视网 时间:2022-04-13 20:09

这哥们公司的开发部门写了一个jboss的脚本,用于启动jboss程序,需要输入下面类似的命令:./jboss_init.sh start然后会在脚本的提

一哥们提了一个问题,觉得比较有意思,小研究了下:
这哥们公司的开发部门写了一个jboss的脚本,用于启动jboss程序,需要输入下面类似的命令:
./jboss_init.sh start
然后会在脚本的提示下输入一个密码确认,然后才能启动。
问题是这样的,他不想手工输入这个密码,希望程序能够自动完成这个输入过程(因为搞技术的的都是很懒的一批人,懒人成就了技术革新)

为模拟上述的大致环境,我找到了sqlplus程序,sqlplus程序在指定用户名不指定密码的时候,会提示用户输入密码
如下:
[Oracle@rac1 scripts]$ sqlplus mai
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 4 16:50:34 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter password:


于是就写出了下面的这个脚本:
[oracle@rac1 scripts]$ more t.sh
#!/usr/bin/expect
set timeout 10
spawn /u02/db_1/bin/sqlplus mai
expect "password:"
send "mai "
interact
注:大部分系统是没有安装expect工具的,需要进行手工安装一下,安装完成之后的程序就是在/usr/bin/expect下
上面的timeout表示一个时间,给出脚本推送文本的时间
spawn的话,就是执行相关的触发命令,这个命令也可以是一个脚本
expect的话,就是查找相应的字段,,准备在其后输入参数值
send很明显,就是发送文本,后面的 表示键入一次回车
interact的话,就是使当前脚本恢复交互模式,如果没有这一行的话,那么脚本就会在延时时间到之后自动退出


执行如下:
[oracle@rac1 scripts]$ ./t.sh
spawn /u02/db_1/bin/sqlplus mai
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 4 16:53:05 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Enter password: mai


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options


SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

有上面的结果可见:成功登陆,OK了!

特别注意:
在大部分的脚本程序中,是不允许吧明文密码直接写入脚本中的,这样容易造成密码的泄露。
在此仅仅是使用了sqlplus这个工具模拟了这个过程,显示中的实用性还是有一些的,但是不建议使用。

Linux中shell scripts

linux

热心网友 时间:2022-04-13 17:17

 shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。
  但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能.
  最简单的例子就是创建用户,我创建100个用户,初始密码为123,那么要是挨着passwd username ,交互性输入密码,那不得疯掉,但是脚本里应该怎么写呢?将密码123,输入到passwd命令?
  本文收集了较常用交互方法,并进行了比较和总结。
  自动交互方法一:利用命令的自带参数,将标准输入作为手动输入的内容
  自动交互最关键的就是交互信息的自动输入,首先联想到文件重定向,在shell编程中有这样一种用法(参考Linux与UNIX SHELL编程指南 chapt 5.7):"command <<delimiter p="" 从标准输入中读入,直至遇到delimiter分界符。?
  重定向操作符command <<delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符, p="" shell就知道输入结束了。最常见的delimiter分界符是eof,当然完全可以自定为其他字符。
  对于需求1 要求的自动登陆ftp,并作系列操作,则可以用这种方法进行自动交互。代码如下:
  [yjwan@test ~]$ ftp -i -n 192.168.21.46 <
  user dbftp dbftp101
  ls
  EOF
  下面是得到的结果:
  Connected to 192.168.21.46.
  220 developerjail FTP server (Version 6.00LS) ready.
  331 Password required for dbftp.
  230 User dbftp logged in.
  Remote system type is UNIX.
  Using binary mode to transfer files.
  229 Entering Extended Passive Mode (|||54281|)
  150 Opening ASCII mode data connection for '/bin/ls'.
  total 8847424
  -rw-r--r-- 1 dbftp www 9055318991 Aug 28 14:28 ewiz90.sql_2010-08-29
  226 Transfer complete.
  221 Goodbye.
  测试可以发现,如上代码使用帐号名dbftp,密码dbftp101成功登陆了ftp服务器,并进入目录,ls出当前目录的文件。
  注意事项:
  1 这里一定要加-i ,否则必定失败!!
  这里ftp用的-I 参数 结束了交互式输入,因此可以用文本的方式自动地输入用户密码以及操作方式
  如果不用-I 参数,那么必定要求你手动输入密码的!!那么就达不到自动登陆的要求了
  你可以man ftp找到这个参数
  -i 关闭多文件传送中的交互式提示。请参考 prompt、mget、mput 和 mdelete 子命令,以取得多文件传送中的提示的描述。
  -n 防止在起始连接中的自动登录。否则, ftp 命令会搜索 $HOME/.netrc 登录项,该登录项描述了远程主机的登录和初始化过程。请参考 user 子命令。
  2 举一反三:只要是要求输入密码的命令,一般都带有一个参数,允许你从标准输入,输入用户密码,以及操作。
  其他常用的自动登陆命令的参数
  1) Passwd命令
  Linux下 Passwd有参数
  --stdin
  This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.
  所以linux下自动改变用户密码的办法就是
  Echo 密码 |passwd –stdin 用户名
  Freebsd没有以上参数 注意
  他的方法是echo passwd |pw mod user username -h 0
  2)smbpasswd
  -s
  This option causes smbpasswd to be silent (i.e. not issue prompts)
  and to read its old and new passwords from standard input, rather
  than from /dev/tty (like the passwd(1) program does). This option
  is to aid people writing scripts to drive smbpasswd
  3)sudo
  在shell脚本中需要用root用的来执行指令:
  sudo 自动输入密码
  echo "password" | sudo -S netstat -tlnp
  -S
  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
  3 标准输入还可以用以下两种写法:
  可以将下面的内容写入到一个文本
  然后ftp -I –n ip <文本
  或者echo “..” |ftp –I –n ip
  都是可以的!
  因为他们都满足“有一个标准的输入”这个条件
  4 ssh的自动登陆没有这样的自动输入密码的参数
  一般都是使用公钥/私钥的方式自动登录
  这种文章满街都是,网上google一下ssh自动登陆就可以找到答案。
  或者用下面的办法。
  自动交互方法2:利用expect脚本自动登陆
  这个 expect基本属于一种编程了
  基本任何需要交互式登陆的场合,他都可以解决,是相当的牛*。
  只要是第一种办法解决不了的,基本都可以用这种办法。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...其他人都无问题,确定网络连接无问题,请问是什么原因? 描写花朵从花蕾到开放的句子 描写花蕾的优美句子 ...毒毛和鲜艳色斑,一般食虫鸟不敢捕食,这在生物学上属于…( )A.保护... 安徽名人出身地 山东中专学校有哪些? 山东现代职业学院毕业是本科还是大专还是高职? 我春考考了374我不知道报哪个学校 山东现代学院中专部好不好 为什么我号卖了100元藏宝阁待审核金就40元 是咋么回事呀 兄弟7480和兄弟7840粉盒一样吗 兄弟2325粉盒适用于什么型号的联想打印机 为什么我家的狗狗睡觉的时候会叫呢? 为什么狗狗睡觉的时候有时会叫起来并且突然醒过来? 为什么狗狗睡觉的时候会叫? 我家狗狗睡觉的自己有时候会不由自主的哼叫,什么原因?难道狗狗也在做梦吗? 狗狗晚上一直叫是什么原因? 我家狗狗睡着了之后会经常叫唤。像做噩梦了一样,也像是在讲梦话,这是怎么回事 狗狗有4岁了,夜里睡觉突然叫声像狼叫怎么回事,好像很伤心的!是在做梦?这是第二次了,我起来哄哄她 狗狗睡着睡着突然叫起来是怎么回事 怎样申请支付宝详细点? 女人肾虚什么症状 女人肾虚都有什么症状?气虚、血虚都有什么症状? 不光男人会肾虚女人也会肾虚,女人肾虚的表现有哪些? 女人肾虚有什么症状6大经典表现? 为什么我这两天我左边眉毛总跳呢? 我左眉毛老跳是怎么回事 关于shell scripts中的&&与|| 哈弗f7x2022款最新消息 手机屏幕讲究什么?各种屏幕材质有什么特性(要包含省电方面) GPON光猫通讯芯片是BROADLIGHT更厉害还是BROADCOM更厉害? 四川电信的光纤用的光猫是EPON还是GPON啊? 不同部位的皱纹,是不是代表了不同的疾病? 警惕:脸上几种皱纹,暗示你有病了 脸上的皱纹是怎么一回事? 面部有皱纹跟经络不通有关系吗 脸上皱纹多和身体衰老有联系吗 皱纹是怎么形成的脸上 血虚的症状有哪些?血虚应该如何调理? 血虚的症状有哪些,血虚症状的体质表现有什么 10岁~15岁的学生有哪些贫血症状? 血虚有哪些症状? 小孩子出现了贫血的症状该怎么办 “降”做姓时读什么 宁津县第一中学的介绍 宁津县育新中学可以转学插班吗? 什么是最低工资保障制度?农民工也受最低工资制度的保障吗? 厚街竹溪中学和湖景中学哪个比较好 什么叫最低工资工资 我是一个中学生,想在暑假,练一手好字。有什么比较实用的方法?比如练几个小时,怎么练,临摹还是仿写?