要求是在每台linux的机器上,都安装好jdk,然后设置好环境变量,让java -version命令可以正常显示出版本信息
然后再装tomcat手动的去装是不可能的了,因为机器有几千台,人力只有1个人大家帮忙出出主意,100分不够的话,我还有很多请给出shell脚本的代码demo,如果有其他方法去实现,也请给出代码的demo

解决方案 »

  1.   

    你这时服务器部署吗?怎么这么多台都要装啊?
    在shell里写入安装指令吗?这样的话也要在几千台里先放好安装文件吧工程挺庞大的。
      

  2.   

    在csdn里面以前有过类似提问
    http://topic.csdn.net/u/20100728/20/e650bf3b-33c3-44e0-8877-2e7ca9b054b1.html而且你这个可以用局域网控制软件的,百度一搜一大堆。只需要在一台服务器机子上就可以把其它的电脑全部控制并搭配你需要的环境。
    希望对你有帮助
      

  3.   

    要不先教我最简单的,假设我只需要在自己本地的linux上安装jdk,而且jdk的安装文件放在了/home/user目录下,谁给个shell脚本,让我参考一下吧
      

  4.   

    在linux上是不能执行可执行文件的,如.exe文件.所以你的安装文件放在linux下也执行不了。
    你可以这样搞:
    先在windows上装好jdk,然后将整个jdk包压缩成tar包,每个服务器都将tar传到特定的目录下,然后shell脚本写的内容是将tar解压缩,然后设定环境变量就OK了。希望对你有帮助。
      

  5.   

    linux下的jdk和tomcat都可以使用解压的方式安装
    1. 下载bin的JDK和Tomcat
    2. 使用shell脚本解压,设置环境变量如果想使用一台机器控制,估计不太可能,得在每台机器上弄吧,只不过使用shell脚本,一切工作都是只执行一个shell文件而已
      

  6.   

    楼主是想安装步骤自动化吧,一个脚本,然后传一个机器名列表,自动登录并进行安装看你客户机器上装jdk和tomcat是什么登录,如果是FTP,telnet这些协议好办,用shell管道,把用户名和密码写在脚本里面,可以自动登录并在远程主机上执行;如果是ssh稍微有点麻烦,因为一般ssh是只能sudo到root,而装JDK和tomcat一般是需要root权限来安装的,那样shell管道是不行的,要用模拟终端,expect脚本是一个好的选择给你一个例子:用expect自动用scp传输文件,帐号密码用参数传入即可,你登录后执行其他命令是一样的
    #!/usr/bin/expect
    set ip [ lindex $argv 0 ]
    set location [ lindex $argv 1 ]
    set filename [ lindex $argv 2 ]
    set username [ lindex $argv 3 ]
    set passwd   [ lindex $argv 4 ]
    if { $ip=="" } {
        puts "usage: uploadRemote remoteIP remotelocation localFileName username passwd"
        exit 1
    }if { $location=="" } { 
        puts "usage: uploadRemote remoteIP remotelocation localFileName username passwd"
        exit 1
    }if { $filename=="" } { 
        puts "usage: uploadRemote remoteIP remotelocation localFileName username passwd"
        exit 1
    }if { $username=="" } { 
        puts "usage: uploadRemote remoteIP remotelocation localFileName username passwd"
        exit 1
    }if { $passwd=="" } { 
        puts "usage: uploadRemote remoteIP remotelocation localFileName username passwd"
        exit 1
    }spawn scp $filename $username@$ip:$location/
    expect {
        "yes/no" {send "yes\r";exp_continue}
        "Password:" {send "$passwd\r";exp_continue}
        "password:" {send "$passwd\r";exp_continue}
        timeout    puts "timeout";abort
    }
    expect eof {
     exit
    }
      

  7.   

    可以参考这篇文章
    http://www.ibm.com/developerworks/cn/aix/library/au-spunix_remoteserver/index.html
      

  8.   

    可否架个FTP服务器,在每个机器用shell下载FTP下的jdk文件,再设置环境变量?
      

  9.   

    写个脚本很简单,但是ssh的登录必须要密码
      

  10.   

    这是我没多久整理过的一篇文章,对你应该有帮助,内容如下:
    ===============================
    前言: 由于要远程使用linux,所以无法在GUI下操作,全部操作只能用命令行的方式来完成。通过收集与整理,以及最终实践,特将此步骤记录下来(好记性不如烂博客嘛!)。OS:  Red Hat Enterprise Linux Server release 5.4 (Tikanga)远程连接工具:Secure File Transfer Client (含FTP工具) --该工具小巧方便。 假设所有软件的安装程序都放在/root/install 目录下,各程序名称如下:
     jdk-1_5_0_04-linux-i586.rpm
     apache-tomcat-6.0.18.tar.gz
     mysql-5.0.27.tar.gzPS: 可去oracle官网下载1.6的版本: jdk-6u23-linux-i586-rpm.bin
    安装步骤(假设为当前目录时)
    chmod +x jdk-6u23-linux-i586-rpm.bin //添加执行权限
    ./jdk-6u23-linux-i586-rpm.bin //运行(然后根据提示操作即可)
    ========================================================
    1).切换Liunx系统的语言(如果在中文环境出错时,提示信息很多时候会乱码)
     用vi文本工具修改 /etc/sysconfig/i18n 文件的内容为: 
     LANG="en_US.UTF-8"
     
    2).查看Linux系统的版本
     lsb_release -a
     或:
     cat /etc/issue
     
    3).安装JDK 先输入如下2条命令:
     cd /root/install //进入安装文件路径
     rpm -ivh jdk-1_5_0_04-linux-i586.rpm //进行安装
     
      待安装完成后将可在 /usr/java/jdk1.5.0_04 目录下看到非常熟悉的JDK目录结构,接下来配置JDK的环境变量。
      方法:用vi文本工具在 /etc/profile 配置文件的末尾添加如下4行内容:
     JAVA_HOME=/usr/java/jdk1.5.0_04
     CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  //如果不加入当前目录.时,在java 类名操作时会提示找不到相应的类名
     PATH=$JAVA_HOME/bin:$PATH
     export PATH JAVA_HOME CLASSPATH
     保存退出后,紧接着刷新配置文件
     source /etc/profile
     至此,JDK的安装及环境变量的设置已经全部完成。
      
      
    4).安装Tomcat
     cd /root/install  //进入安装文件路径
     tar -zxvf apache-tomcat-6.0.18.tar.gz //解压tomcat
     cp -R apache-tomcat-6.0.18 /usr/local/tomcat6  //递归拷贝apache-tomcat-6.0.18至/usr/local目录下并重命名为tomcat6
     此时tomcat安装完成。
     为了以后进入tomcat目录时方便,可将tomcat安装目录设置到环境变量中,方法如下:
     用vi文本工具在 /etc/profile 文件末尾加入
     TOMCAT_HOME=/usr/local/tomcat6
     export TOMCAT_HOME
     然后再用命令source刷新配置文件即时生效(可用 echo $TOMCAT_HOME 命令查看效果)。
     接下来需要为tomcat配置管理员用户,方法如下:
     cd $TOMCAT_HOME
     cd conf
     接着用vi工具修改tomcat-user.xml的内容为:
     <?xml version='1.0' encoding='utf-8'?>
     <tomcat-users>
       <role rolename="manager"/>
       <role rolename="admin"/>
       <user username="admin" password="" roles="admin,manager"/>
     </tomcat-users>
     
     配置完成后启动tomcat,命令如下:
     cd $TOMCAT_HOME //进入tomcat安装目录
     cd bin  //进入可执行文件目录
     ./startup.sh //执行启动 (./shutdown.sh则为停止)
     此时便可以看到如下内容:
     Using CATALINA_BASE:   /usr/local/tomcat6
     Using CATALINA_HOME:   /usr/local/tomcat6
     Using CATALINA_TMPDIR: /usr/local/tomcat6/temp
     Using JRE_HOME:       /usr/java/jdk1.5.0_04
     
     再用netstat -nat命令便可以查看到8080端口处于LISTEN(监听)状态。
     
     如果无法连接http://ip:8080 ,则有可能是防火墙问题。可以按如下方法修改:
     用vi文本工具在 /etc/sysconfig/iptables 文件末尾处含reject字样的语句之前添加如下内容:
     -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
     保存退出后,重启防火墙以使新设置生效,输入命令
     /etc/init.d/iptables restart
     
     TOMCAT安装步骤至此结束。
     
     PS: 关于Linux整体开、关防火墙命令:
      1.永久性生效,OS重启后不会复原
      开启: chkconfig iptables on
      关闭: chkconfig iptables off
      2.即时生效,OS重启后复原
      开启: service iptables start
      关闭: service iptables stop5).安装MySQL
     cd /root/install //进入安装文件路径
     groupadd mysql //添加一个名为mysql的组
     useradd -g mysql mysql //在组mysql中添加一个名为mysql的用户
     tar -zxvf mysql-5.0.27.tar.gz //解压,会在当前目录生成一个mysql-5.0.27的目录
     cd mysql-5.0.27
     ./configure --prefix=/usr/local/mysql   //进行配置(并设置安装路径)(比较久,直到出现Thank you for choosing MySQL!表示正确.)
                          //如果出现no acceptable C compiler found in $PATH的问题,说明没有安装gcc组件。
     make //此操作会持续更久
     make install
     cp support-files/my-medium.cnf /etc/my.cnf  //这时会问是否覆盖重名文件,回答y
     cd /usr/local/mysql 
     bin/mysql_install_db --user=mysql //以mysql用户建系统库,必须以mysql用户,这点很重要!
     chown -R root .   //递归改变当前路径的拥有者为root用户
     chown -R mysql var  //递归改变当前路径下的var目录的拥有者为mysql用户
     chgrp -R mysql .  //递归改变当前路径的拥有者为mysql组
     bin/mysqld_safe --user=mysql &  //也要用mysql用户运行(&表示在后台运行),如果没任何反应,恭喜!成功了!
     netstat -natp //查看是否开启了mysql默认的3306端口(会显示pid信息(在每一行最后的数值))
     PS: 关闭mysql服务的命令是: bin/mysqladmin -u root -p shutdown 
      或    kill 对应pid值/////////////////////////////////////////////////////////////////////////////////////////////////
    如果在配置操作【 ./configure --prefix=/usr/local/mysql】时出现了以下错误:
    checking for tgetent in -ltermcap… no
    checking for termcap functions library… configure: error: No curses/termcap library found
    说明 curses/termcap 库没有安装
    去下载一个ncurses-5.6.tar.gz
    wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
    tar -zxvf ncurses-5.6.tar.gz
    cd ncurses-5.6
    ./configure --prefix=/usr --with-shared --without-debug
    make
    make install clean
    然后再重新编译Mysql进行安装。
    /////////////////////////////////////////////////////////////////////////////////////////////////  为以后方便进入mysql目录,以及mysql安装目录下相关程序的使用,可设置mysql目录至环境变量,方法如下:
     用vi文本工具在 /etc/profile 文件末尾加入
     MYSQL_HOME=/usr/local/mysql
     PATH=.:$MYSQL_HOME/bin:$PATH
     export PATH MYSQL_HOME
     保存退出后别忘记 source /etc/profile 刷新操作!
     
     登录mysql[(可用mysql -u root -p)密码默认为空]后建立用户(保证本机登录使用以及其他IP机器登录):  use mysql; //先选定全局数据库  grant select,insert,update,delete,create,drop on *.* to username@'localhost' identified by 'password'; //username表示新用户名; localhost表示本机;password表示设定的密码
      grant select,insert,update,delete,create,drop on *.* to username@'source ip' identified by 'password'; //username表示新用户名; source ip表示想产生连接的IP, 为%号时表示除了本机之外的其他IP; password表示设定的密码
      flush privileges; //刷新权限PS: *.*表示所有数据库的所有对象,如果数据库名是dbtest,则应该是dbtest.*
      

  11.   

    最近刚开始要学习shell脚本了。
      

  12.   

    这类的问题去CU(chinaunix.net)比较好,我觉得这是服务器集群的问题,不太懂,但是肯定不是一个一个装就是了...