解决xshell连接SuSE系统时需要键盘输入密码的问题
expect-自动输入密码-交互-shell
![expect-自动输入密码-交互-shell](https://img.taocdn.com/s3/m/3adc7078a55177232f60ddccda38376bae1fe059.png)
expect-⾃动输⼊密码-交互-shell...⽅法⼀:shell脚本需要交互的地⽅可以使⽤here⽂档是实现,但是有些命令却需要⽤户⼿动去就交互如passwd、scp对⾃动部署免去⽤户交互很痛苦,expect能很好的解决这类问题。
expect的核⼼是spawn expect send setspawn 调⽤要执⾏的命令expect 等待命令提⽰信息的出现,也就是捕捉⽤户输⼊的提⽰:send 发送需要交互的值,替代了⽤户⼿动输⼊内容set 设置变量值interact 执⾏完成后保持交互状态,把控制权交给控制台,这个时候就可以⼿⼯操作了。
如果没有这⼀句登录完成后会退出,⽽不是留在远程终端上。
expect eof 这个⼀定要加,与spawn对应表⽰捕获终端输出信息终⽌,类似于if....endifexpect脚本必须以interact或expect eof结束,执⾏⾃动化任务通常expect eof就够了。
设置expect永不超时set timeout -1设置expect 300秒超时,如果超过300没有expect内容出现,则推出set timeout 300expect编写语法,expect使⽤的是tcl语法。
⼀条Tcl命令由空格分割的单词组成. 其中, 第⼀个单词是命令名称, 其余的是命令参数cmd arg arg arg$符号代表变量的值. 在本例中, 变量名称是foo.$foo⽅括号执⾏了⼀个嵌套命令. 例如, 如果你想传递⼀个命令的结果作为另外⼀个命令的参数, 那么你使⽤这个符号[cmd arg]双引号把词组标记为命令的⼀个参数. "$"符号和⽅括号在双引号内仍被解释"some stuff"⼤括号也把词组标记为命令的⼀个参数. 但是, 其他符号在⼤括号内不被解释{some stuff}反斜线符号是⽤来引⽤特殊符号. 例如:\n 代表换⾏. 反斜线符号也被⽤来关闭"$"符号, 引号,⽅括号和⼤括号的特殊含义expect使⽤实例1。
XSHELL常用技巧搜集
![XSHELL常用技巧搜集](https://img.taocdn.com/s3/m/f1e21da3534de518964bcf84b9d528ea81c72f28.png)
XSHELL常用技巧搜集1.快速连接远程服务器:在XSHELL主界面点击“新会话”按钮,在“远程主机”一栏输入主机地址和端口号,选择连接方式(如SSH2),输入用户名和密码,点击“确定”按钮即可快速连接远程服务器。
2. 快速断开连接:使用Ctrl + D快捷键可以快速断开当前SSH会话。
3.多会话窗口:XSHELL支持在同一窗口中同时打开多个会话窗口,方便管理多个服务器。
在主界面点击“新会话”按钮即可打开新的会话窗口。
4.会话保存与恢复:XSHELL可以保存当前的会话设置和连接信息,方便下次快速连接。
在“会话”菜单中选择“保存会话”可以将当前会话保存为一个会话文件,需要恢复时,选择“会话”菜单中的“打开会话文件”打开之前保存的会话文件。
5.快速命令执行:XSHELL支持通过快捷键执行特定的命令。
可以在“工具”菜单中选择“快捷命令设置”来设置快捷键执行的命令。
7.字体和颜色设置:XSHELL可以通过“选项”->“外观”来设置字体和颜色。
可以调整字体大小和颜色,以适应个人的习惯和需求。
8. 自动补全:XSHELL支持自动补全命令和路径。
可以在输入命令或路径时按下Tab键进行自动补全。
9.分屏显示:XSHELL支持将一个会话窗口分为多个分屏进行显示。
可以通过菜单栏中的“视图”->“置为分屏”来实现。
10.彩色语法高亮:XSHELL支持彩色语法高亮显示,可使命令和输出的内容更加易读。
可以在“选项”->“外观”->“语法加亮”中选择所需的语法类型和颜色。
11. 快速切换会话:可以使用Ctrl + Tab快捷键在不同的会话窗口之间快速切换,方便管理多个服务器。
12. 快速查找:XSHELL支持快速查找命令历史记录和文件内容。
可以使用Ctrl + F快捷键打开查找窗口,然后输入要查找的内容即可。
13.批量命令执行:XSHELL可以通过批量命令执行功能同时在多台服务器上执行相同的命令。
可以在“会话”菜单中选择“批量命令执行”,然后输入要执行的命令和服务器列表,点击“开始”按钮即可进行批量命令执行。
访问网上邻居需输入密码的解决办法
![访问网上邻居需输入密码的解决办法](https://img.taocdn.com/s3/m/172b3971b94ae45c3b3567ec102de2bd9605de0a.png)
访问网上邻居需输入密码的解决办法访问网上邻居需输入密码的解决办法今天在组成的局域网中(所有的ip协议及共享消息都设置好了),朋友的电脑通过共享访问我的电脑时候,显示需要输入密码,无法访问其他网络邻居的电脑。
到网上找了些解决的办法将此问题给解决了,将以下方法记下来,方便其他人以后碰到类似的情况找到快速解决的办法。
1.检查guest账户是否开启XP默认情况下不开启guest账户,因此些为了其他人能浏览你的计算机,请启用guest账户(右击“我的电脑”-管理-本地用户和组-用户-右击GUEST属性-把“帐户已停用”去掉勾)。
同时,为了安全请为guest设置密码或相应的权限。
当然,也可以为每一台机器设置一个用户名和密码以便计算机之间的互相访问。
2.检查是否拒绝Guest用户从网络访问本机当你开启了guest账户却还是根本不能访问时,请检查设置是否为拒绝guest从网络访问计算机,因为XP默认是不允许guest从网络登录的,所以即使开了guest也一样不能访问。
在开启了系统Guest用户的情况下解除对Guest账号的限制,点击“开始→运行”,在“运行”对话框中输入“GPEDIT.MSC”,打开组策略编辑器,依次选择“计算机配置→Windows设置→安全设置→本地策略→用户权利指派”,双击“拒绝从网络访问这台计算机”策略,删除里面的“GUEST”账号。
这样其他用户就能够用Guest账号通过网络访问使用Windows XP系统的计算机了。
3.改网络访问模式XP默认是把从网络登录的所有用户都按来宾账户处理的,因此即使管理员从网络登录也只具有来宾的权限,若遇到不能访问的情况,请尝试更改网络的访问模式。
打开组策略编辑器,依次选择“计算机配置→Windows设置→安全设置→本地策略→安全选项”,双击“网络访问:本地账号的共享和安全模式”策略,将默认设置“仅来宾—本地用户以来宾身份验证”,更改为“经典:本地用户以自己的身份验证”。
xshell 技巧
![xshell 技巧](https://img.taocdn.com/s3/m/fe1cf413905f804d2b160b4e767f5acfa0c7834b.png)
xshell 技巧(原创版3篇)目录(篇1)1.Xshell 简介2.Xshell 的基本操作技巧3.Xshell 的高级操作技巧4.Xshell 的实用功能5.总结正文(篇1)一、Xshell 简介Xshell 是一款功能强大的 SSH 客户端,它允许用户通过安全的 SSH 协议连接到远程服务器。
Xshell 支持多种操作系统,包括 Windows、Linux 和 Mac OS,提供了丰富的功能和便捷的操作,使得远程服务器管理变得更加简单高效。
二、Xshell 的基本操作技巧1.连接远程服务器:在 Xshell 中,用户可以通过输入远程服务器的IP 地址或域名,以及用户名和密码来连接到远程服务器。
2.查看和管理会话:在 Xshell 中,用户可以创建多个会话,每个会话对应一个远程服务器连接。
用户可以通过查看和管理会话,方便地切换和服务器进行交互。
3.文件传输:Xshell 支持 SFTP 和 SCP 协议,用户可以通过这些协议在远程服务器和本地计算机之间传输文件。
三、Xshell 的高级操作技巧1.脚本编写:Xshell 支持脚本编写,用户可以通过编写脚本来实现一些自动化操作,提高工作效率。
2.批量操作:Xshell 支持批量操作,用户可以通过批量操作来执行多个远程命令,减少重复劳动。
3.终端定制:Xshell 允许用户自定义终端样式,包括字体、颜色、背景等,提高用户体验。
四、Xshell 的实用功能1.历史记录:Xshell 可以记录用户的操作历史,方便用户随时查看和恢复之前的操作。
2.搜索功能:Xshell 支持搜索功能,用户可以通过搜索功能快速定位和查找远程服务器上的文件和信息。
3.代理支持:Xshell 支持代理连接,用户可以通过代理连接到受限的远程服务器。
综上所述,Xshell 作为一款优秀的 SSH 客户端,其基本操作技巧和高级操作技巧为用户提供了丰富的功能和便捷的操作。
同时,Xshell 的实用功能也大大提高了用户在远程服务器管理的效率。
怎样使用Xshell工具连接网络设备
![怎样使用Xshell工具连接网络设备](https://img.taocdn.com/s3/m/a0394e10cdbff121dd36a32d7375a417866fc185.png)
怎样使用Xshell工具连接网络设备
Xshell是一个功能强大的安全终端模拟软件,支持多种协议,包括SSH1/SSH2/TELNET/SERIAL等。
下面是店铺跟大家分享的是怎样使用Xshell工具连接网络设备,欢迎大家来阅读学习。
怎样使用Xshell工具连接网络设备
工具/原料
Xshell4
方法/步骤
打开xshell工具,点击新建按钮。
新建会话属性框中,填写名称,选择SSH协议,主机填写要连接设备的IP地址,点击确定。
出现的会话列表,选择刚才添加的会话,点击连接。
弹出SSH安全警告,未知主机密钥。
一次性接受是用户名和密码只有效一次,接受并保存是保存用户名和密码,下次无需在输入。
选择接受并保存,弹出SSH用户名,输入登录用户名,点击确定。
输入密码,点击确定。
进入黑框,连接成功。
使用TELNET连接网络设备。
在步骤2中,选择TELNET协议,主机也是填写IP地址。
在会话列表中,选择刚建立的会话,点击连接。
在黑色框中输入用户名和密码,按enter键进入。
Xshell中文版的使用说明
![Xshell中文版的使用说明](https://img.taocdn.com/s3/m/ca358b1e17fc700abb68a98271fe910ef12dae7d.png)
Xshell中文版的使用说明Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。
接下来是小编为大家收集的Xshell中文版的使用说明,希望能帮到大家。
Xshell中文版的使用说明创建会话1. 在[文件]菜单选择[新建],出现新建会话属性对话框。
图1: 新建会话属性对话框2. 在[名称]中输入会话名。
3. 在[协议]目录选择适用协议。
4. [主机]上输入服务器的主机名称或IP地址。
5. 在[端口号]输入远程服务器使用的端口号。
6. 点击[确定]。
连接远程主机以下是连接SSH会话的过程。
1. 在[文件]菜单选择[打开]。
2. 在会话目录中选择可连接会话后点击[连接]即出现SSH用户名对话框。
图2: SSH用户名对话框3. 输入用户名后点击[确定]即出现SSH用户身份验证对话框。
图3: SSH用户身份验证对话框4. 如要进行Password验证,请在[密码]项输入密码后点击[确定]。
5. 如要进行Public Key验证,请先在目录中选择用户秘钥后在[密码]项输入所选用户密钥后点击[确定]。
6. 如要进行Keyboard Interactive验证,请点击[确定]后回答在连接过程中出现的提问。
退出Xshell如需断开会话连接,请在终端屏幕的提示中输入“exit”或在[文件]菜单中选择[断开连接]。
会话管理如何新建会话:1. 选择[文件]菜单项的[新建]以打开新建会话属性对话框。
2. 输入连接信息。
3. 点击[确定]。
如何打开会话对话框:· 在[文件]菜单项选择[打开]。
· 点击标准按钮的[打开]。
如何编辑会话:1. 打开会话对话框。
2. 选择拟要编辑的会话。
3. 点击标准按钮的[属性]。
4. 编辑会话后点击[确定]。
如何重命名会话:1. 打开会话对话框。
2. 选择拟要重命名的会话后点击鼠标右键。
3. 选择菜单项的[重命名]。
如何另存会话:1. 打开会话对话框。
linux 中不输入密码运行 sudo 命令的方法
![linux 中不输入密码运行 sudo 命令的方法](https://img.taocdn.com/s3/m/f5697f357dd184254b35eefdc8d376eeaeaa17e8.png)
linux 中不输入密码运行 sudo 命令的方法【原创版3篇】篇1 目录1.介绍 sudo 命令2.列出几种不输入密码运行 sudo 命令的方法3.总结篇1正文【1.介绍 sudo 命令】sudo 是一个 Linux 和 Unix 系统中的命令行工具,用于以其他用户的身份执行命令。
通常情况下,使用 sudo 命令需要输入密码以确保安全。
然而,在某些情况下,我们可能希望在不输入密码的情况下运行 sudo 命令。
本文将介绍几种实现这一目标的方法。
【2.列出几种不输入密码运行 sudo 命令的方法】方法一:编辑/etc/sudoers 文件/etc/sudoers文件是sudo命令配置的核心文件。
我们可以编辑该文件,以允许特定用户在不输入密码的情况下运行sudo命令。
以下是具体步骤:1.打开终端。
2.使用文本编辑器打开/etc/sudoers文件,如:`sudo visudo`。
3.在文件末尾添加以下内容:```username ALL=(ALL) NOPASSWD: /path/to/your/command```其中,`username`是希望免密码运行 sudo 命令的用户名,`/path/to/your/command`是该用户可以运行的命令路径。
保存并关闭文件。
此时,指定的用户可以在不输入密码的情况下运行 sudo 命令。
方法二:使用 sudo visudo 命令直接授权我们可以使用 sudo visudo 命令直接在终端中授权用户运行 sudo 命令,而不修改/etc/sudoers 文件。
以下是具体步骤:1.打开终端。
2.输入以下命令,授权指定用户运行 sudo 命令:```sudo visudo```3.在打开的编辑器中,添加以下内容:```username ALL=(ALL) NOPASSWD: /path/to/your/command```其中,`username`是希望免密码运行 sudo 命令的用户名,`/path/to/your/command`是该用户可以运行的命令路径。
Xshell配置ssh免密码登录-密钥公钥(Publickey)
![Xshell配置ssh免密码登录-密钥公钥(Publickey)](https://img.taocdn.com/s3/m/6b56b55f2a160b4e767f5acfa1c7aa00b52a9d4d.png)
Xshell配置ssh免密码登录-密钥公钥(Publickey)1 简介ssh登录提供两种认证⽅式:⼝令(密码)认证⽅式和密钥认证⽅式。
其中⼝令(密码)认证⽅式是我们最常⽤的⼀种,这⾥介绍密钥认证⽅式登录到linux/unix的⽅法。
使⽤密钥登录分为3步:1、⽣成密钥(公钥与私钥);2、放置公钥(Public Key)到服务器~/.ssh/authorized_key⽂件中;3、配置ssh客户端使⽤密钥登录。
1.1 ⽣成密钥(公钥与私钥)打开Xshell,在菜单栏点击“⼯具”,在弹出的菜单中选择“(新建⽤户密钥⽣成向导)”,如下图:弹出“新建⽤户秘钥⽣成向导”对话框,在“秘钥类型”项选择“RSA”公钥加密算法,“秘钥长度”选择任意密钥长度,长度越长,安全性越⾼,如下图:点击“下⼀步”,等待密钥⽣成继续下⼀步,在“秘钥名称”中输⼊Key的⽂件名称,我这⾥为“id_rsa_2048(2)”;在“加密密码”处输⼊⼀个密码⽤于加密私钥,并再次输⼊密码确认,如下图:点击“下⼀步”,密钥⽣成完毕(Public key Format选择SSH2-OpenSSH格式),这⾥显⽰的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到⽂件,如下图。
点击“保存为⽂件”按钮,将公钥(Public key)保存到磁盘,⽂件名为“laomao”,备⽤。
最后点击“完成”即可。
公钥保存完后,接下来为私钥⽂件。
点击“导出”,导出为私钥⽂件,⽤来打开刚才的公钥。
请妥善保管。
点击“保存”后,会弹出⼀个框,输⼊刚才设置的密码123456.在点击“确定”即可。
1.2 放置公钥(Public Key)到服务器~/.ssh/authorized_key⽂件中上⾯的步骤只是⽣成了公钥和私钥的过程,接下来就是要将刚才⽣成的公钥放到要管理的服务器上。
使⽤到Xshell登录到服务器,进⼊到“/root/.ssh/”⽬录,运⾏rz命令(如果没有rz命令,运⾏yum install lrzsz安装),将key.pub发送到服务器,然后运⾏如下命令,将公钥(Public Key)导⼊到“authorized_keys”⽂件:[root@mysql-db01 ~]# cd .ssh/[root@mysql-db01 .ssh]# lsauthorized_keys known_hosts[root@mysql-db01 .ssh]# rz -Erz waiting to receive.[root@mysql-db01 .ssh]# lsauthorized_keys known_hosts laomao.pub[root@mysql-db01 .ssh]# cp authorized_keys authorized_keys.bak[root@mysql-db01 .ssh]# cat laomao.pub >authorized_keys[root@mysql-db01 .ssh]# cat authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAYEAybjy7/DVWxXm4lcXFA+x0bgBMi+aQ6zIzyBfFSKJEMhAhs/MxbKHOl1c1GwzPSAKLAHoR8UZSQO7QQcYKqeb8cNWR8f9NGNBCJs+e6Fpl7BvNPKfNrixnq+gT5VIz [root@m01 .ssh]# chmod 600 authorized_keys[root@m01 .ssh]#1.3 配置ssh客户端使⽤密钥登录打开Xshell,点击“新建”按钮,弹出“New Session Properties”对话框,在“连接”栏⽬中,输⼊刚刚配置好公钥(Public Key)的IP地址和端⼝,如下图所⽰:在⽤户⾝份认证的窗⼝输⼊认证⽅法为“public key”从⽤户秘钥出选择刚⽣成的私钥⽂件,并在下⾯的密码框中输⼊刚才设置的密码123456(可以和系统登陆密码不⼀样)现在就可以使⽤公钥登陆了,浏览选择⽤户秘钥位置,然后输⼊上⾯刚刚设置的密码“123456”,点击“确定”,即可登陆。
Xshell记录Linux连接操作日志遇到的坑
![Xshell记录Linux连接操作日志遇到的坑](https://img.taocdn.com/s3/m/ecb3ef070a4e767f5acfa1c7aa00b52acec79c41.png)
Xshell记录Linux连接操作⽇志遇到的坑1、问题描述:在Windows上,以前⼀直使⽤Secure CRT连接Linux主机进⾏远程操作,使⽤CRT的⽇志功能记录连接过程中的所有操作以及输出。
最近(2019-8-17)使⽤Xshell进⾏连接,也打算记录⽇志,但是发现记录的⽇志有问题,倒不是乱码,⽽是感觉Xshell记录的⽇志把Linux系统连接操作过程中所有的有颜⾊的内容,都换成了Linux下的颜⾊控制代码,如:echo -e "\033[32;41;1m this is echo color input test. \e[0m" 效果如下:但是⽇志就会记录echo -e "\033[32;41;1m this is echo color input test. \e[0m"这⼀串,⽽不是记录this is echo color input test.显然,当我们命令⾏提⽰符有颜⾊,并且ls列出的内容也会⾃动显⽰颜⾊,其他⼀些命令可能也会有颜⾊的输出,记录的都是⼀串串带有控制⾊彩的命令的字符,我们阅读起来就和乱码没什么区别了,及其不友好,那么我们如何解决呢?请往下阅读以下操作中对Xshell的配置最好配置“默认会话属性”,不要单独配置连接属性。
这⾥由于是演⽰,就不讲究这些了。
2、问题模拟:Xshell的⽇志配置如图:连接到Linux主机,做⼀些操作后,⽇志记录的内容如下:3、问题解决:出现上⾯的问题的原因是我们记录⽇志时配置记录了“终端代码”。
千万不要勾选上图中的“包括终端代码”⼀项去掉勾选,我们再来尝试连接Linux主机,做⼀些操作后,⽇志记录的内容如下:到此问题解决!。
ubuntu 避免sftp输入密码的方法
![ubuntu 避免sftp输入密码的方法](https://img.taocdn.com/s3/m/208ea22211a6f524ccbff121dd36a32d7375c7ce.png)
ubuntu 避免sftp输入密码的方法【最新版3篇】目录(篇1)1.介绍 SFTP2.避免在 SFTP 中输入密码的方法3.配置 SSH key4.测试 SSH key5.结论正文(篇1)一、介绍 SFTPSFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,它通过 SSH(Secure Shell)协议进行加密和身份验证,从而确保数据的安全传输。
与常见的 FTP 相比,SFTP 在传输文件时无需输入密码,而是在传输前进行身份验证。
二、避免在 SFTP 中输入密码的方法为了避免在 SFTP 中输入密码,我们可以使用 SSH key 来进行身份验证。
具体操作如下:1.首先,在本地计算机上生成一个 SSH key 对(公钥和私钥)。
在Linux 或 macOS 系统中,可以使用`ssh-keygen`命令进行生成。
在生成过程中,可以选择保存位置和密钥类型。
推荐使用 RSA 密钥类型,密钥长度选择 4096 位。
2.将生成的公钥复制到远程服务器的`~/.ssh/authorized_keys`目录下。
可以通过 SSH 连接到远程服务器,然后使用`ssh-copy-id`命令将公钥复制到远程服务器。
例如:`ssh-copy-id 用户名@远程服务器 IP 或域名`。
3.配置 SSH agent 以管理 SSH key。
在 Linux 或 macOS 系统中,可以使用`eval "$(ssh-agent -s)"`命令启动 SSH agent。
然后,将私钥添加到 SSH agent,使用`ssh-add`命令,例如:`ssh-add ~/.ssh/id_rsa`。
三、测试 SSH key配置好 SSH key 后,可以测试一下是否正常工作。
在本地计算机上使用`ssh`命令连接到远程服务器,例如:`ssh 用户名@远程服务器 IP 或域名`。
如果 SSH key 配置正确,系统将不会提示输入密码。
sshpass 使用 -回复
![sshpass 使用 -回复](https://img.taocdn.com/s3/m/61865840cd1755270722192e453610661ed95aef.png)
sshpass 使用-回复SSH (Secure Shell) 是一种加密网络协议,常用于远程连接和管理计算机系统。
在一些自动化任务中,我们常需要通过SSH 连接进行脚本操作,而SSH 的连接过程通常需要手动输入密码。
为了简化这个过程,一种便捷的工具被开发出来,就是SSH Pass。
SSH Pass 是一个Linux 系统下的工具,它可以自动化SSH 连接过程中的密码输入,从而使得脚本可以无需人工干预地完成远程连接任务。
本文将介绍如何使用SSH Pass。
在开始之前,确保已经正确安装了SSH Pass 工具。
在Ubuntu 系统中,可以通过以下命令进行安装:sudo apt-get install sshpass安装完成后,我们可以开始使用SSH Pass 进行远程连接任务。
第一步,我们需要了解SSH Pass 的基本用法和语法。
通常情况下,SSH Pass 的命令为:sshpass -p [password] ssh [user][host]其中`[password]` 是要连接的主机的密码,`[user]` 是我们的连接用户名,`[host]` 是要连接的主机名或者IP 地址。
第二步,我们需要了解如何在脚本中使用SSH Pass。
我们可以将SSH Pass 命令放入脚本中,并通过脚本参数传递连接参数。
例如,我们可以创建一个脚本`connect.sh`,内容如下:bash#!/bin/bashPASSWORD=1USER=2HOST=3sshpass -p PASSWORD ssh USERHOST在上述脚本中,我们通过`1`、`2` 和`3` 获取了从命令行传递进来的密码、用户名和主机参数,并在SSH Pass 命令中使用了这些参数。
第三步,我们可以在命令行中执行脚本,传递相应的参数。
例如,执行以下命令:./connect.sh mypassword myuser myhost上述命令将会使用SSH Pass 连接到主机`myhost`,并使用用户名`myuser` 和密码`mypassword`。
shell如何自动输入密码
![shell如何自动输入密码](https://img.taocdn.com/s3/m/1b5d3e553b3567ec102d8a24.png)
shell如何自动输入密码,shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。
shell脚本在处理自动循环或大的任务方面可节省大量的时间,通过创建一个处理任务的命令清单,使用变量、条件、算术和循环等方法快速创建脚本以完成相应工作,这比在命令行下一个个敲入命令要省时省力得多。
但是有时候我们可能会需要实现和交互程序如ftp,telnet服务器等进行交互的功能,这时候我们需要用到shell的自动交互功能.最简单的例子就是创建用户,我创建100个用户,初始密码为123,那么要是挨着passwd username ,交互性输入密码,那不得疯掉,但是脚本里应该怎么写呢?将密码123,输入到passwd命令?本文收集了较常用交互方法,并进行了比较和总结。
自动交互方法一:利用命令的自带参数,将标准输入作为手动输入的内容自动交互最关键的就是交互信息的自动输入,首先联想到文件重定向,在shell编程中有这样一种用法(参考Linux与UNIX SHELL编程指南chapt 5.7):"command << delimiter 从标准输入中读入,直至遇到delimiter分界符。
"重定向操作符command << delimiter是一种非常有用的命令,shell将分界符delimiter之后直至下一个同样的分界符之前的所有内容都作为输入,遇到下一个分界符,shell就知道输入结束了。
最常见的delimiter分界符是EOF,当然完全可以自定为其他字符。
对于需求1 要求的自动登陆ftp,并作系列操作,则可以用这种方法进行自动交互。
代码如下:[yjwan@test ~]$ ftp -i -n 192.168.21.46 <user dbftp dbftp101lsEOF下面是得到的结果: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-29226 Transfer complete.221 Goodbye.测试可以发现,如上代码使用帐号名dbftp,密码dbftp101成功登陆了ftp服务器,并进入目录,ls出当前目录的文件。
Xshell不能连接SSH的解决(附Kali2.0SSH连接)
![Xshell不能连接SSH的解决(附Kali2.0SSH连接)](https://img.taocdn.com/s3/m/5d0e48c7370cba1aa8114431b90d6c85ec3a88c3.png)
Xshell不能连接SSH的解决(附Kali2.0SSH连接)
重新启动看看:/etc/init.d/ssh restart (/etc/init.d/ssh start)
如果没有装ssh的,那么==》apt-get install ssh or yum install ssh (CentOS)
成功连接
下⾯设置⼀下开机启动
关于vi使⽤我已经说很多遍,再说⼀遍吧
输⼊ vi /etc/rc.local 你会发现没法输⼊,这时候输⼊i,进⼊编辑模式
添加⼀个启动项/etc/init.d/ssh start (有些是让sshd,貌似也可以)
退出保存就先按⼀下ESC,输⼊:wq即可
不确定⾃⼰是否设置成功,那看看便知==》cat /etc/rc.local
之后重启⼀下:reboot
ok,下次开机就能直接ssh连接了
我这边的案例是kali,也就是debian系列的,CentOS可能有点差异,⼤概处理⽅式肯定是类似的,没装就装⼀下,然后设置下开机⾃启-----------------------------------------------------
附录:Kali 2.0 X64
vi /etc/ssh/sshd_config
这个可以不设置,我就没设置,要root权限很简单,su切换⼀下即可
启动ssh /etc/init.d/ssh start
验证SSH状态:/etc/init.d/ssh status
开机启动 vi /etc/rc.local
在exit 0前添加 /etc/init.d/ssh start
FTP连接的时候选择SFTP。
基于Xshell使用密钥方式连接远程主机
![基于Xshell使用密钥方式连接远程主机](https://img.taocdn.com/s3/m/784b11350622192e453610661ed9ad51f01d543f.png)
基于Xshell使⽤密钥⽅式连接远程主机基于Xshell使⽤密钥⽅式连接远程主机,具体内容如下连接远程主机,就验证⾝份⽽⾔,⼀般有两种⽅式,⼀种是通过⽤户密码;另⼀种通过公钥的⽅式(Public Key)。
图1、xshell⽀持验证登录⽤户的⽅式下⾯就使⽤Public Key的⽅式来实现连接,通过⼯具ssh-kengen⽣成密钥对。
注意:操作之前需要ping通本机和⽬的主机(如果ping不通,可能的原因是防⽕墙、SELinux没关闭,或者⽹关设置有问题等)使⽤XShell,这⾥使⽤的是XShell manager 5,⽬的主机为CentOS6,将需要连接的远程主机称为⽬的主机。
⽬的主机安装ssh服务端,并开启[root@node1 ~]$ yum install -y openssh-server # 安装openssh服务端[root@node1 ~]$ yum install -y openssh-clients #安装openssh客户端,可以不安装[root@node1 ~]$ service sshd start # 临时开启sshd服务[root@node1 ~]$ chkconfig sshd on # 永久开启sshd服务,服务器重启也⽣效[root@node1 ~]$service sshd status # 查看sshd服务运⾏状态openssh-daemon (pid 1384) 正在运⾏... # 显⽰正在运⾏⽣成ssh密钥对(包括私钥和公钥)[root@node1 ~]$ (umask 0077; ssh-keygen) # ⽣成ssh密钥对,并将权限设置为600Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): # 回车Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:fd:72:10:50:a6:7d:83:c7:93:d2:26:3d:12:0e:38:2f root@node1The key's randomart image is:+--[ RSA 2048]----+| .o.+ || o B * . || o. O % || E .. O + || .S o || o || . o || o || |+-----------------+[root@node1 ~]$ cd .ssh/[root@node1 .ssh]$ ll # 查看密钥/公钥对信息,权限都为600总⽤量 8-rw-------. 1 root root 1675 5⽉ 21 14:26 id_rsa # 私钥-rw-------. 1 root root 392 5⽉ 21 14:26 id_rsa.pub # 公钥[root@node1 .ssh]$修改sshd连接配置⽂件vim /etc/ssh/sshd_config PasswordAuthentication no # 不允许密码验证登录PubkeyAuthentication yes # 允许公钥验证登录AuthorizedKeysFile .ssh/id_rsa.pub # 指定公钥⽂件路径将ssh密钥对导出到本机,建议创建⼀个⽬录专⽤放置密钥对#]sz id_rsa#]sz id_rsa.pub重载sshd服务[root@node1 .ssh]$ service sshd reload重新载⼊ sshd: [确定]使⽤XShell连接ssh root@IP图2、选择密钥⽂件图3、导⼊私钥并确定注意:点击确定之后还要重新连接⼀次图4、连接成功客户端使⽤私钥去验证,⽽远程主机使⽤公钥验证。
shell不能执行su后的脚本
![shell不能执行su后的脚本](https://img.taocdn.com/s3/m/a4087c07bb1aa8114431b90d6c85ec3a87c28bb8.png)
shell不能执⾏su后的脚本问题:在shell脚本中执⾏“su – ⽤户名”后,脚本终⽌执⾏,并且切换到su 中指定⽤户名的交互式界⾯现象:我在root中执⾏⼀个脚本,但是其中的⼀些命令或脚本必须⽤oracle⽤户来执⾏。
,[root@HZ-ITF-01 cron.d]# vi /data/itf/app/oracle/sync/test.sh#!/bin/bashset -xsu - oraclesqlplus /nolog <<EOFconn hxy/hxycreate table test1 as select * from dba_tables;exitEOF在root⽤户下执⾏sh /data/itf/app/oracle/sync/test.sh后,停⽌在oracle⽤户的交互界⾯不在往下执⾏,需要⼿动输⼊exit才能继续,但是在脚本中加⼊exit也不好使分析:a、su – 之后就直接切换环境并且等待⽤户的交互式访问了,不在继续执⾏脚本中的命令b、su后的bash是⼀个⼦shell,脚本⾥写exit没有⽤,这些都要等su这个进程结束后才会执⾏。
解决⽅案: su – ⽤户 -c 命令或者sudo -u ⽤户命令参考⽰例:参考资料: Shell 中切换⽤户然后脚本修改成下⾯的⽅式#!/bin/bash#set -xsu - oracle -c sqlplus /nolog <<EOFconn hxy/hxycreate table test1 as select * from dba_tables;exitEOF脚本顺利执⾏或者改成:#!/bin/bashset -xsu - oracle <<!sqlplus /nolog <<EOFconn hxy/hxycreate table test1 as select * from dba_tables;exitEOF!也可以顺利执⾏。
SUSE实现密钥登陆
![SUSE实现密钥登陆](https://img.taocdn.com/s3/m/e6133013650e52ea55189864.png)
linux SecureCRT ssh key认证登陆-通过SecureCRT创建key登录认证一、生成公钥/密钥对使用SecureCRT的工具->创建公钥即可,加密算法选择RSA,因为sshd 配置文件中选择了RSA算法这一步中,通行短语可以不输入。
但要求输入,登陆的时候会要求你输入通行短语。
并修改Comment 相关信息,采用个人账户名称@服务器信息方式(可以所有的服务器都使用一个密钥对)填写密钥长度,默认是1024注意保存好密钥对,建议使用手机保存这里选择生成的密钥使用OpenSSH Key 格式。
如果选择默认的格式,上传到服务器的时候需要执行格式转换的工作,需要通过命令行来连接的也需要通过securecrt来转换私钥为openssh格式,这里建议采用openssh key格式!点击完成后会生成两个文件,默认是Identity和Identity.pub,其中Identity 为私钥,Identity.pub为公钥。
二、服务器端的配置上传Windows客户机SecureCRT生成的公钥Identity.pub到用户home目录下.ssh文件夹中,一般是用ftp上传.注意上传之前,一定要以ASCII格式上传。
以本人用户为例cd /home/yangzgmkdir .ssh #在需要开启ssh连接的用户目录下建立 .ssh目录chmod 700 .sshcd .sshmv Identity.pub authorized_keys #如果采用的格式不是openssh的话,就需要执行ssh-keygen -i -f Identity.pub >>authorized_keys 命令进行格式转换chmod 644 .ssh/authorized_keys更改ssh配置文件vim /etc/ssh/sshd_config #修改,确认ssh配置文件PermitRootLogin no #禁止root登录PubkeyAuthentication yes #启用公告密钥配对认证方式AuthorizedKeysFile .ssh/authorized_keysRSAAuthentication yes #允许RSA密钥PasswordAuthentication no #禁止密码验证登录,如果启用的话,OpenSSH的RSA认证登录就没有意义了。