shell编程、ssh-root量产、ping-IP脚本操作 问题-flag

2023-05-16

1-su root : Authentication failure问题的解决
su/(su root)命令不能切换root,提示su: Authentication failure;

只要你sudo passwd root过一次之后,下次再su的时候只要输入密码就可以成功登录了;

如下图:

ubuntu系统获取root权限,并且实现xshell root登录

 

1.首先我么用ubuntu账号登陆
2.然后我们输入sudo passwd root 
3.这是我们需要输入两次密码,建议输入的与ubuntu的密码一致(好记)
4.然后我们输入sudo vi /etc/ssh/sshd_config  回车
找到 PermitRootLogin   without-password 修改为
PermitRootLogin   yes
5.ESC    :wq保存退出   然后sudo service ssh restart  重启
6.关闭xshell,然后用root账户登录就可以了, 现在ftp就可以用root账户登录上传和下载文件了

2-ssh或ubuntu无法对同一个IP进行多次访问

情况:量产设备(网口需要出厂的时候都设置为同一个IP),当电脑电脑访问不同的设备都同样的IP时,电脑会自动识别为防攻击操作(禁止进入访问):进入sudo vi /etc/ssh/ssh_config 解开如下注释;对不同设备的同样的IP可以进行访问啦!

同类问题参考(解除防攻击操作):SSH 登录失败:Host key verification failed 的处理方法

3-如何让shell脚本设定为,进入root系统后,可自动再系统内执行shell指令

在本地shell脚本中ssh到远程服务器并执行命令

shell远程执行脚本的目的:便于集中管理
  经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。一下介绍两种shell命令远程执行的方法
前提条件:配置ssh免密码登陆
1-对于简单的命令:
  如果是简单执行几个命令,则:ssh user@remoteNode "cd /home ; ls"
  基本能完成常用的对于远程节点的管理了,几个注意的点:
          (1)双引号,必须有。如果不加双引号,第二个ls命令在本地执行
          (2)分号,两个命令之间用分号隔开
     对于脚本的方式:
       有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现:
2-复杂操作-高级形式
#!/bin/bash
ssh user@remoteNode > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!

远程执行的内容在“<< eeooff ” 至“ eeooff ”之间,在远程机器上的操作就位于其中,注意的点:

(1)<< eeooff,ssh后直到遇到eeooff这样的内容结束,eeooff可以随便修改成其他形式。
(2)重定向目的在于不显示远程的输出了
(3)在结束前,加exit退出远程节点

4-通过ping命令检测IP地址的shell脚本,代码如下:

#!/bin/sh
#filename ping.sh
#ping ip的脚本
pingcmd()
{
prefix="SERVER $1 PING $2"
ping -w 1 -c 1 $2>/dev/null
ret=$?
if [ $ret -eq 0 ]

then printf "$prefix is up"
else printf "$prefix is down \n"
fi
return 0
}
echo "---begin check host ---"
server0="192.168.1.3"
server1="192.168.1.2"
server2="192.168.1.1"
server3="192.168.1.4"
server4="192.168.1.5"
server5="192.168.1.6"
server6="192.168.1.7"
server7="192.168.1.9"
pingcmd $server0 $server1
pingcmd $server0 $server2
pingcmd $server0 $server3
pingcmd $server0 $server4
pingcmd $server0 $server5
pingcmd $server0 $server6
pingcmd $server0 $server7
echo ""

代码说明:
通过调用shell函数pingcmd,实现ping设置在severX中的IP地址代表的主机。
分析下pingcmd函数的实现:
prefix="SERVER $1 PING $2"    //定义一个字符串,为后面printf输出做准备
ping -w 1 -c 1 $2>/dev/null          //调用ping函数,-w为超时时间;-c为ping的次数;
        ping -w 1 -c 1 $2  :从脚本所在机去ping之后pingcmd函数的第二个参数(本例为之后建立的serve1-7),超时1秒,执行1次
        >/dev/null             :作用是把屏幕的输出从指向到某处,/dev/null是指向空设备,即不需要标准输出。
ret=$?                                      //获取返回值,0为ping成功
if [ $ret -eq 0 ]                          //如果返回值为0,即ping成功
then printf "$prefixt is up"     //则输出一开始定义的字符串(例:SERVER 192.168.1.3 PING 192.168.1.2 OK)
else printf "$prefixt is down" //同上,输出错误信息(此处删除标准输出,之前已定义了输)。
fi

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell编程、ssh-root量产、ping-IP脚本操作 问题-flag 的相关文章

随机推荐