Unix自动化问题讲解

系统 其他OS 自动化
利用 cfengine,可以根据任意标准Unix自动化几乎任何任务。但是,它的功能非常象 Makefile 功能,对变量的复杂操作是很难处理的。

我们在使用Unix的时候,经常需要运用到Unix自动化的知识。今天,我们就来了解下Unix自动化的知识。任务自动化是一个很泛的主题。我将本节仅限于非交互式 简单自动化。对于交互式命令的Unix自动化,Expect 是当前可用的***工具。应该要么了解它的语法,要么用 Perl Expect.pm 模块。可以从 CPAN 获取 Expect.pm;请参阅参考资料以了解更多详细信息。

利用 cfengine,可以根据任意标准Unix自动化几乎任何任务。但是,它的功能非常象 Makefile 功能,对变量的复杂操作是很难处理的。

当发现需要运行这样的命令,该命令的参数来自于散列或通过单独的函数时,通常***切换到 shell 脚本或 Perl。由于 Perl 的功能,其可能是较好的选择。虽然,不应该将 shell 脚本弃为替代来使用。有时,Perl 是不必要的,您只需要运行一些简单的命令。

Unix自动化中,自动添加用户是一个常见问题。可以编写自己的 adduser.pl 脚本,或者用大多数现代 Unix 系统提供的 adduser 程序。请确保使用的所有 Unix 系统间语法是一致的,但不要尝试编写一个通用的 adduser 程序接口。

它太难了,在您认为涵盖了所有 Unix 变体后,迟早会有人要求 Win32 或 MacOS 版本。这不是仅仅用 Perl 就能解决的问题之一,除非您是非常有野心的。这里只是让脚本询问用户名、密码、主目录等等,并以 system() 调用来调用 adduser。

清单 4:用简单的脚本调用 adduser
 

  1. #!/usr/bin/perl -w   
  2. use strict;   
  3. my %values; # will hold the values to fill in   
  4. # these are the known adduser switches   
  5. my %switches = ( home_dir => '-d', comment => '-c', group => '-G',   
  6. password => '-p', shell => '-s', uid => '-u');   
  7. # this location may vary on your system   
  8. my $command = '/usr/sbin/adduser ';   
  9. # for every switch, ask the user for a value   
  10. foreach my $setting (sort keys %switches, 'username')   
  11. {   
  12. print "Enter the $setting or press Enter to skip: ";   
  13. $values{$setting} = ;   
  14. chomp $values{$setting};   
  15. # if the user did not enter data, kill this setting   
  16. delete $values{$setting} unless length $values{$setting};   
  17. }   
  18. die "Username must be provided" unless exists $values{username};   
  19. # for every filled-in value, add it with the right switch to the comma  
  20. nd   
  21. foreach my $setting (sort keys %switches)   
  22. {   
  23. next unless exists $values{$setting};   
  24. $command ."$switches{$setting} $values{$setting} ";   
  25. }   
  26. # append the username itself   
  27. $command .= $values{username};   
  28. # important - let the user know what's going to happen   
  29. print "About to execute [$command]\n";   
  30. # return the exit status of the command   
  31. exit system($command);  

Unix自动化的一个问题,我们就讲解到这里了。

【编辑推荐】

  1. Unix系统中知识讲解
  2. Unix cpio命令详细解析
  3. AIX CDE的问题解决讲解
  4. Unix系统与小型机的讨论
  5. Unix Telnet知识讲解
责任编辑:小霞
相关推荐

2010-05-04 11:59:39

Unix系统

2021-02-01 11:03:36

Python开发邮件

2010-05-04 14:54:32

Unix网关

2017-12-17 21:58:18

2010-05-07 17:26:32

Unix系统

2010-05-07 17:21:55

Unix系统

2024-11-01 15:05:12

2010-05-06 17:07:34

Unix命令

2011-07-25 14:53:37

Unix服务器运维

2010-04-15 18:06:08

Unix操作系统

2018-07-13 06:46:35

数据中心自动化微服务

2010-05-10 12:59:02

Unix系统

2010-05-05 16:05:36

Unix cfengi

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-05-04 12:25:28

Unix链接

2010-05-05 10:19:51

Unix系统

2010-04-30 13:38:51

Unix at命令

2010-05-05 17:41:03

IBM Unix

2010-05-04 09:22:10

Unix文件
点赞
收藏

51CTO技术栈公众号