几种实现自动telnet/ssh/ftp的脚本

17 篇文章 0 订阅
9 篇文章 0 订阅

最近可能需要做一些自动化巡检的脚本,所以需要使用到自动telnet/ssh/ftp之类的东西,google了半天后整理了一下几种实现方式:

1、首先出场的就是比较经常使用的shell脚本方式,如:

(sleep 1;echo "public";sleep 1;echo "public";sleep 1;echo "/home/public/myscripts/checkos.sh";sleep 1;echo "exit") | telnet 192.168.0.220

优点:简单,容易实现,输出是实时的

缺点:需要估算好命令的执行时间,如果命令需要执行10s,而sleep 只有5s的话,那么正在执行的命令就会被中断


2、使用perl脚本实现,如:

#!/usr/bin/perl -w
use strict;
use Net::Telnet;

#登录信息
#注意,$prompt是登陆后的命令提示行,如果匹配不上,脚本将会timeout
my $password = 'public';
my $username = 'public';
my $prompt   = '/\[.+\]\$ $/';
my $host     = '192.168.0.220';
my $cmd1     = '/usr/bin/who';
my $cmd2     = '/bin/ls -l';
my $cmd3     = '/home/public/myscripts/checkos.sh AUTO ';

#连接并登录到服务器
my $conn = new Net::Telnet(
   Timeout=>60,
   Prompt=>$prompt,
);
$conn->open($host);
$conn->login($username,$password);

#分别执行$cmd1、$cmd2和$cmd3命令,并输出结果
my @output = $conn->cmd($cmd1);
print "Output:@output";
@output = $conn->cmd($cmd2);
print "Output:@output";
@output = $conn->cmd($cmd3);
print "Output:@output";

#断开连接
$conn->close;

注释:需要先安装perl-Net-Telnet模块

优点:perl脚本编程的好处就不用我在赘述了,不需要估算命令执行时间,因为它会等的命令执行完后才返回

缺点:交互不是实时的,因为它需要等待命令执行完后才一次性返回,但是这不算什么大的缺点,因为如果作为批量脚本的话是不需要一对一实时输出的。


3、第三种方式就是使用传说中的expect来实现,如:

#!/usr/bin/expect -c

set timeout 2
set TERM xterm
set SERVER [lindex $argv 0]
set USER [lindex $argv 1]
set PASSWD [lindex $argv 2]

if { $argc != 3 } {
        send_user "Usage:server username password \n"
        send_user $SERVER
        exit
}

spawn telnet
expect "telnet> "
send "open $SERVER\n"
expect "ogin:"
send "$USER\n"
expect "assword:"
send "$PASSWD\n"
expect "]$"
send "ls -ltr\n"

interact {
        timeout 10 {send "exit\n"}
}
优点:实现简单,谁用谁知道,个人比较推荐这个方式。

缺点:好像没什么缺点,expect设计的目的就是用来做这个的


4、最后一种实现方式是google出来的,不过我执行不出结果来,但是还是把代码贴出来吧,如:

#!/usr/bin/python -c

import telnetlib

host = '192.168.0.220'
user = 'public'
password = 'public'
commands = ['cd bin','ls -ltr']

tn = telnetlib.Telnet(host)

tn.read_until("ogin:")
tn.write(user + "n")
tn.read_until("assword:")
tn.write(password + "n")

for command in commands:
tn.write(command+"n")

tn.write("exitn")

print tn.read_all()
print 'Finish!'

优点:我只能说python的强悍性

缺点:我跑不出来不知道算不算缺点,哈哈,知道的人麻烦帮忙解释一下。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些命令用于查看和检查系统的配置和日志文件。以下是每个命令的简要说明: 1. `cat /etc/pam.d/system-auth`: 显示 `/etc/pam.d/system-auth` 文件的内容,该文件用于管理系统级身份验证和授权。 2. `cat /etc/pam.d/sshd`: 显示 `/etc/pam.d/sshd` 文件的内容,该文件用于管理 SSH 服务的身份验证和授权。 3. `cat /etc/profile`: 显示 `/etc/profile` 文件的内容,该文件是一个全局配置文件,用于设置用户环境变量和执行系统级别的脚本。 4. `cat /etc/passwd`: 显示 `/etc/passwd` 文件的内容,该文件包含了系统中所有用户的基本信息,但不包含密码。 5. `cat /etc/shadow`: 显示 `/etc/shadow` 文件的内容,该文件包含了系统中用户的加密密码。 6. `cat /etc/group`: 显示 `/etc/group` 文件的内容,该文件包含了系统中用户组的信息。 7. `cat /etc/hosts.equiv`: 显示 `/etc/hosts.equiv` 文件的内容,该文件用于定义可信任主机列表,允许这些主机使用 rsh 或 rlogin 进行远程登录。 8. `cat /etc/hosts.rhosts`: 显示 `/etc/hosts.rhosts` 文件的内容,该文件用于定义远程主机和用户之间的信任关系。 9. `ps aux | grep telnet`: 列出所有正在运行的进程,并过滤出包含 "telnet" 关键字的进程。 10. `ps aux | grep rlogin`: 列出所有正在运行的进程,并过滤出包含 "rlogin" 关键字的进程。 11. `ps aux | grep ftp`: 列出所有正在运行的进程,并过滤出包含 "ftp" 关键字的进程。 12. `cat /etc/ssh/sshd_config`: 显示 `/etc/ssh/sshd_config` 文件的内容,该文件包含了 SSH 服务器的配置选项。 13. `umask`: 显示当前用户的默认文件权限掩码。 14. `ls -l /etc/passwd`: 显示 `/etc/passwd` 文件的详细信息,包括权限、所有者和修改时间等。 15. `ls -l /etc/group`: 显示 `/etc/group` 文件的详细信息,包括权限、所有者和修改时间等。 16. `ls -l /etc/shadow`: 显示 `/etc/shadow` 文件的详细信息,包括权限、所有者和修改时间等。 17. `ls -l /etc/xinetd.conf`: 显示 `/etc/xinetd.conf` 文件的详细信息,该文件是 xinetd 服务的配置文件。 18. `ls -l /etc/sudoers`: 显示 `/etc/sudoers` 文件的详细信息,该文件用于配置 sudo 命令的权限。 19. `ls -l /etc/httpd.conf`: 显示 `/etc/httpd.conf` 或 `/etc/apache2/apache2.conf` 文件的详细信息,这些文件是 Apache HTTP 服务器的配置文件。 20. `ls -l /etc/httpd-mpm.conf`: 显示 `/etc/httpd-mpm.conf` 文件的详细信息,该文件定义了 Apache MPM(多处理模块)的配置选项。 21. `ls -l /etc/conf/tomcat-users.xml`: 显示 `/etc/conf/tomcat-users.xml` 文件的详细信息,该文件包含了 Tomcat 服务器的用户配置。 22. `ls -l /etc/conf/web.xml`: 显示 `/etc/conf/web.xml` 文件的详细信息,该文件是 Java Web 应用程序的配置文件。 23. `ls -l /etc/conf/server.xml`: 显示 `/etc/conf/server.xml` 文件的详细信息,该文件是 Tomcat 服务器的主配置文件。 24. `ls -l /etc/my.cnf`: 显示 `/etc/my.cnf` 或 `/etc/mysql/my.cnf` 文件的详细信息,这些文件是 MySQL 数据库服务器的配置文件。 25. `ls -l /var/mysqllog/logbin.log`: 显示 `/var/mysqllog/logbin.log` 文件的详细信息,该文件是 MySQL 数据库二进制日志的位置。 26. `ps aux | grep syslogd`: 列出所有正在运行的进程,并过滤出包含 "syslogd" 关键字的进程。 27. `ps aux | grep rsyslogd`: 列出所有正在运行的进程,并过滤出包含 "rsyslogd" 关键字的进程。 28. `service syslog status`: 显示 syslog 服务的状态。 29. `service rsyslog status`: 显示 rsyslog 服务的状态。 30. `ps aux | grep audit`: 列出所有正在运行的进程,并过滤出包含 "audit" 关键字的进程。 31. `service auditd status`: 显示 auditd 服务的状态。 32. `ps aux | grep ssh`: 列出所有正在运行的进程,并过滤出包含 "ssh" 关键字的进程。 33. `ls -l /var/log/messages`: 显示 `/var/log/messages` 文件的详细信息,该文件包含了系统的一般日志消息。 34. `ls -l /var/log/secure`: 显示 `/var/log/secure` 文件的详细信息,该文件包含了安全相关的日志消息。 35. `ls -l /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的详细信息,该文件包含了审计日志。 36. `tail -20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 37. `tail -20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 38. `tail -n 20 /var/log/messages`: 显示 `/var/log/messages` 文件的尾部 20 行内容。 39. `tail -n 20 /var/log/audit/audit.log`: 显示 `/var/log/audit/audit.log` 文件的尾部 20 行内容。 40. `cat /etc/logrotate.conf`: 显示 `/etc/logrotate.conf` 文件的内容,该文件用于配置日志文件的轮转。 41. `cat /etc/rsyslog.conf`: 显示 `/etc/rsyslog.conf` 文件的内容,该文件是 rsyslog 服务的配置文件。 42. `auditctl -s`: 显示当前系统上启用的审计规则。 43. `auditctl -l`: 列出当前系统上的所有审计规则。 44. `lsof -i:21`: 列出所有正在使用端口 21(FTP)的进程和文件。 45. `lsof -i:22`: 列出所有正在使用端口 22(SSH)的进程和文件。 46. `lsof -i:23`: 列出所有正在使用端口 23(Telnet)的进程和文件。 请注意,某些命令可能需要管理员权限才能运行,且需要小心处理敏感信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值