当你注册了很多个Serv00需要SSH登录保活时,脚本来了

当你看见免费的东东就一直想要,导致Serv00从S1赛季到S7赛季注册了很多账号,又不想一个一个登录去设置Cron job和上传保活脚本,那这个脚本你就能用上了:

#!/bin/bash

echo "开始 SSH 连接尝试"

# S1-User1
echo "正在尝试连接到 s1.serv00.com,用户名:User1(连接:S1-User1)"
sshpass -p 'PASSWORD' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt [email protected] 'echo "Hello from S6-User1"; date; sleep 10'
echo "S6-User1 连接成功!"
sleep 3

# S2-User2
echo "正在尝试连接到 s2.serv00.com,用户名:User2(连接:S2-User2)"
sshpass -p 'PASSWORD' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt [email protected] 'echo "Hello from S6-User2"; date; sleep 10'
echo "S6-User2 连接成功!"
sleep 3

# S6-User3
echo "正在尝试连接到 s6.serv00.com,用户名:User3(连接:S6-User3)"
sshpass -p 'PASSWORD' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt [email protected] 'echo "Hello from S6-User3"; date; sleep 10'
echo "S6-User3 连接成功!"
sleep 3

# S7-User4
echo "正在尝试连接到 s7.serv00.com,用户名:User4(连接:S7-User4)"
sshpass -p 'PASSWORD' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt [email protected] 'echo "Hello from S7-User4"; date; sleep 10'
echo "S7-User4 连接成功!"

echo "所有 SSH 连接尝试已完成。"
sleep 3
echo "脚本运行完毕,正在退出..."
sleep 3
exit 0

把里面的s7.serv00.com改为你的赛季地址(连不上的话可改为web7.serv00.com),User1和PASSWORD分别改为你对应赛季的用户名密码,保存为xxx.sh,上传到任何一台能运行sh脚本的主机,设置定时任务运行即可。比如用宝塔,或者Serv00都行。注意下,Serv00的定时任务列表有时会被清空.

运行成功效果是这样的:

开始 SSH 连接尝试
正在尝试连接到 s6.serv00.com,用户名:User1(连接:S6-User1)
Warning: Permanently added 's6.serv00.com' (ED25519) to the list of known hosts.
Hello from S6-User1
Thu Jul 25 17:00:53 CEST 2024
Connection to s6.serv00.com closed.
S6-User1 连接成功!
正在尝试连接到 s6.serv00.com,用户名:User2(连接:S6-User2)
Warning: Permanently added 's6.serv00.com' (ED25519) to the list of known hosts.
Hello from S6-User2
Thu Jul 25 17:01:32 CEST 2024
Connection to s6.serv00.com closed.
S6-User2 连接成功!
正在尝试连接到 s6.serv00.com,用户名:User3(连接:S6-User3)
Warning: Permanently added 's6.serv00.com' (ED25519) to the list of known hosts.
Connection reset by 85.194.242.89 port 22
S6-User3 连接成功!
正在尝试连接到 s7.serv00.com,用户名:User4(连接:S7-User4)
Warning: Permanently added 's7.serv00.com' (ED25519) to the list of known hosts.
Hello from S7-User4
Thu Jul 25 17:04:16 CEST 2024
Connection to s7.serv00.com closed.
S7-User4 连接成功!
所有 SSH 连接尝试已完成。
脚本运行完毕,正在退出...

改进了下:

  1. 为每个 SSH 连接添加了 timeout 30 命令,设置了 30 秒的超时时间。
  2. 在每个 SSH 连接后添加了错误处理:
  • 如果返回码是 124,表示连接超时。
  • 如果返回码不是 0 且不是 124,表示连接失败。
  • 如果返回码是 0,表示连接成功。
#!/bin/bash

echo "开始 SSH 连接尝试"

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:********(连接:S6-*******)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ********@s6.serv00.com 'echo "Hello from S6-*******"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-******* 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-******* 连接失败"
else
    echo "S6-******* 连接成功!"
fi
sleep 3

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:**(连接:S6-**)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt **@s6.serv00.com 'echo "Hello from S6-**"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-** 连接失败"
else
    echo "S6-** 连接成功!"
fi
sleep 3

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:******(连接:S6-******)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ******@s6.serv00.com 'echo "Hello from S6-******"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-****** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-****** 连接失败"
else
    echo "S6-****** 连接成功!"
fi
sleep 3

# S7-
echo "正在尝试连接到 s7.serv00.com,用户名:***(连接:S7-***)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ***@s7.serv00.com 'echo "Hello from S7-***"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S7-*** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S7-*** 连接失败"
else
    echo "S7-*** 连接成功!"
fi

echo "所有 SSH 连接尝试已完成。"
sleep 3
echo "脚本运行完毕,正在退出..."
sleep 3
exit 0

22 个赞

:cow:mark

2 个赞

直接echo的吗,连接失败了咋办 :tieba_022:

2 个赞

也不写点判断什么的?

2 个赞

测试效果时输出下,正式用可以把echo都去掉了。
改进了下:

  1. 为每个 SSH 连接添加了 timeout 30 命令,设置了 30 秒的超时时间。
  2. 在每个 SSH 连接后添加了错误处理:
  • 如果返回码是 124,表示连接超时。
  • 如果返回码不是 0 且不是 124,表示连接失败。
  • 如果返回码是 0,表示连接成功。
#!/bin/bash

echo "开始 SSH 连接尝试"

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:********(连接:S6-*******)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ********@s6.serv00.com 'echo "Hello from S6-*******"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-******* 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-******* 连接失败"
else
    echo "S6-******* 连接成功!"
fi
sleep 3

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:**(连接:S6-**)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt **@s6.serv00.com 'echo "Hello from S6-**"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-** 连接失败"
else
    echo "S6-** 连接成功!"
fi
sleep 3

# S6-
echo "正在尝试连接到 s6.serv00.com,用户名:******(连接:S6-******)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ******@s6.serv00.com 'echo "Hello from S6-******"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S6-****** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S6-****** 连接失败"
else
    echo "S6-****** 连接成功!"
fi
sleep 3

# S7-
echo "正在尝试连接到 s7.serv00.com,用户名:***(连接:S7-***)"
timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt ***@s7.serv00.com 'echo "Hello from S7-***"; date; sleep 10'
if [ $? -eq 124 ]; then
    echo "错误:S7-*** 连接超时"
elif [ $? -ne 0 ]; then
    echo "错误:S7-*** 连接失败"
else
    echo "S7-*** 连接成功!"
fi

echo "所有 SSH 连接尝试已完成。"
sleep 3
echo "脚本运行完毕,正在退出..."
sleep 3
exit 0

2 个赞

mark

2 个赞

写了写了,我在Serv00上测试一遍过了,就忘记写了。

1 个赞

mark,学习

1 个赞

要这么多有什么用?

1 个赞

相同代码写太多次了,封装一下,可以改进的点很多

哈哈,不会写循环,菜鸡一个。

:+1: :+1: :+1:

逻辑合理多了,感谢分享,不过楼上大佬说的值得改进的点确实还有哈哈哈

#!/bin/bash

echo "开始 SSH 连接尝试"

# 定义一个函数来处理 SSH 连接
function try_ssh_connection {
    local server=$1
    local user=$2
    local label=$3

    echo "正在尝试连接到 $server,用户名:$user(连接:$label)"
    timeout 30 sshpass -p ******** ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt $user@$server "echo \"Hello from $label\"; date; sleep 10"
    if [ $? -eq 124 ]; then
        echo "错误:$label 连接超时"
    elif [ $? -ne 0 ]; then
        echo "错误:$label 连接失败"
    else
        echo "$label 连接成功!"
    fi
    sleep 3
}

# 调用函数进行 SSH 连接尝试
try_ssh_connection "s6.serv00.com" "********" "S6-*******"
try_ssh_connection "s6.serv00.com" "**" "S6-**"
try_ssh_connection "s6.serv00.com" "******" "S6-******"
try_ssh_connection "s7.serv00.com" "***" "S7-***"

echo "所有 SSH 连接尝试已完成。"
sleep 3
echo "脚本运行完毕,正在退出..."
sleep 3
exit 0
3 个赞

真以为厂商傻,过量薅羊毛的下场只有谁都用不了一条路

mark

你们都多少机子啊

完蛋!!

MJJ 出征

image

感谢分享~

1 个赞

标记一下 有空去加上