吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 453|回复: 0
收起左侧

[其他求助] 麻烦大神帮我解释解释这个脚本

[复制链接]
mikaelson 发表于 2021-5-18 10:39
25吾爱币
一个shell批量修改密码的脚本:内容如下旧密码SSH主机信息old_info文件:#     ip     user    passwd    port
192.168.18.217  root    123456     22
192.168.18.218  root    123456     22
[Shell] 纯文本查看 复制代码
#!/bin/bash

OLD_INFO=old_info

NEW_INFO=new_info

for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do

    USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)

    PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)

    PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)

    NEW_PASS=$(mkpasswd -l 8)

    echo "$IP   $USER   $NEW_PASS   $PORT" >> $NEW_INFO

    expect -c "

    spawn ssh -p$PORT $USER@$IP

    set timeout 2

    expect {

        \"(yes/no)\" {send \"yes\r\";exp_continue}

        \"password:\" {send \"$PASS\r\";exp_continue}

        \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue}

    }"



主要是这2个正则和awk的表示不太明白。
for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do
    USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)

/^[^#]/这个在匹配啥?
I==$1{print 2}然后这个是什么意思?
初学者,请大家指教,百度了一些正则的描述也没能明白。不是很准确。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 15:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表