精华内容
下载资源
问答
  • MacOS下对postgresql的简单管理操作

    千次阅读 2017-01-12 13:17:20
    本篇简单说一下安装完postgresql之后的一些管理和查询操作.首先安装完postgresql之后需要初始化数据库:initdb /usr/local/var/postgres -E utf8如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在...

    如何安装在另一篇blog中有述,这里不再赘述.本篇简单说一下安装完postgresql之后的一些管理和查询操作.

    首先安装完postgresql之后需要初始化数据库:

    initdb /usr/local/var/postgres -E utf8

    如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在MacOS 10.11上),数据库编码类型就是utf8.

    我们可以设置开机启动postgresql服务:

    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
    
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

    第一句将postgresql的配置plist文件做软连接至系统的对应路径下,第二句加载其中的一个plist文件.有可能你的postgresql不是通过homebrew安装的,你的plist文件名会略有不同,你只需要自行到/usr/local/opt/postgresql/中找到正确的文件名就可以了.

    下面是启动和停止postgresql服务的指令:

    pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
    
    pg_ctl -D /usr/local/var/postgres stop -s -m fast

    这里有一点就是往往我们用上面的停止命令会等待一会,然后提示无法停止服务:

    pg_ctl -D /usr/local/var/postgres stop -s -m fast
    
    pg_ctl: server does not shut down

    这时你可以先卸载掉之前自动加载的服务,然后再尝试停止即可:

    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

    在搞定了postgresql服务的启动和停止后,我们可以尝试添加postgresql用户:

    createuser your_username -P
    #Enter password for new role:
    #Enter it again:

    然后我们可以用刚创建的用户建立一个数据库:

    createdb database_name -O username -E UTF8 -e

    上面创建了一个名为database_name的数据库,数据库的所有者为username用户,数据库的编码utf7,最后一个-e参数表示把数据库执行操作的命令显示出来.更多信息你可以通过 createdb –help查看.

    在MacOS中管理postgresql的数据库有2种方法,一种是console,另一种是通过gui,看个人喜好了.

    我们先来看看console方式,你可以用psql之类来连接数据库:

    psql -U username -d database_name -h 122.0.0.1

    进入之后你可以用\h显示SQL的各种命令,用\?来显示psql客户端自身的一些命令,比如\d是显示数据库中的表,\c database_name是连接到指定数据库等等.

    如果你不连接postgresql的情况下,也可以看到已创建数据库的列表:

    psql -l

    如果你从windows转行过来,那么可能跟倾向于使用gui的方式管理postgresql数据库,pgadmin同样不会让你失望,大家可以到官网下载:

    https://www.pgadmin.org

    安装之后,我们需要创建一个到某个数据库的连接,右键点击Browser下的Servers,选择创建服务:

    这里写图片描述

    然后和控制台中用psql连接方法类似我们要设置数据库所在地址,名称,用户名等等内容,然后点击保存.

    这里写图片描述

    当多个客户端连接到同一个数据库时,我们还可以一揽全局,看到它们的状态:

    这里写图片描述

    我们可以进入数据库中的表中去看看表结构,以及表内容:

    这里写图片描述

    postgresql不像sqlite3,它需要服务器才能正常工作,这就是为什么你在rails中用rake创建数据库时sqlite3可以在db目录中看到生成的数据库而postgresql下啥也看不到的原因,所有创建的postgresql数据库都放在一起,你得通过上面讲述的方法来操作哦.

    展开全文
  • SpringSecurity前后端分离下对登录认证的管理

    万次阅读 热门讨论 2018-08-26 20:33:08
    &...本案例基于springboot2.0.4,只说登录验证的管理,不涉及权限的管理。因为学习新东西一子太多,很容易乱。(后面还有登录验证管理的源码分析)   &am

           本案例基于springboot2.0.4,只说对登录验证的管理,不涉及权限的管理。因为学习新东西一下子太多,很容易乱。
           首先添加maven依赖,直接开启springboot自带的spring security即可。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

           接下来配置config,需要继承WebSecurityConfigurerAdapter

    @SpringBootConfiguration
    public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
    
        @Autowired
        private MyAuthenticationSuccessHandler myAuthenticationSuccessHandler;
    
        @Autowired
        private MyAuthenticationFailHandler myAuthenticationFailHandler;
    
        @Bean
        UserDetailsService customUserService() {
            return new MyCustomUserService();
        }
    
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            // 使用自定义UserDetailsService
            auth.userDetailsService(customUserService()).passwordEncoder(new BCryptPasswordEncoder());
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.formLogin().loginProcessingUrl("/user/login")
                    // 自定义的登录验证成功或失败后的去向
                    .successHandler(myAuthenticationSuccessHandler).failureHandler(myAuthenticationFailHandler)
                    // 禁用csrf防御机制(跨域请求伪造),这么做在测试和开发会比较方便。
                    .and().csrf().disable();
        }
    }

           如果验证数据是从数据库中获取的话还需要添加实现了UserDetailsService接口的类,操作数据使用的是mybatis,代码就不罗列了。

    @Component
    public class MyCustomUserService implements UserDetailsService {
    
        @Autowired
        private SysUserMapper sysUserMapper;
    
        /**
         * 登陆验证时,通过username获取用户的所有权限信息
         * 并返回UserDetails放到spring的全局缓存SecurityContextHolder中,以供授权器使用
         */
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            MyUserDetails myUserDetails = new MyUserDetails();
            myUserDetails.setUsername(username);
            SysUser sysUser = sysUserMapper.selectByKeyword(username);
            myUserDetails.setPassword(sysUser.getPassword());
            return myUserDetails;
        }
    }

           上面代码中的MyUserDetails是实现了UserDetails接口,自定义了返回对象。如果不使用MyUserDetails也可以,可以使用默认的User类,只不过验证就复杂点了,为了简化一些不必要的验证属性就自定义了一个UserDetails
    下面是User的代码的一些属性。(是不是挺杂乱的对于初学者)

        private static final long serialVersionUID = 500L;
        private static final Log logger = LogFactory.getLog(User.class);
        private String password;
        private final String username;
        private final Set<GrantedAuthority> authorities;
        private final boolean accountNonExpired;
        private final boolean accountNonLocked;
        private final boolean credentialsNonExpired;
        private final boolean enabled;

           这是自定义的MyUserDetails类,消除了一些不需要的属性对业务的影响。(只保留了3个属性)

    @Component
    public class MyUserDetails implements UserDetails {
    
        private String username;
    
        private String password;
    
        private Collection<? extends GrantedAuthority> authorities;
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public void setAuthorities(Collection<? extends GrantedAuthority> authorities) {
            this.authorities = authorities;
        }
    
        @Override
        public Collection<? extends GrantedAuthority> getAuthorities() {
            return this.authorities;
        }
    
        @Override
        public String getPassword() {
            return this.password;
        }
    
        @Override
        public String getUsername() {
            return this.username;
        }
    
        @Override
        public boolean isAccountNonExpired() {
            return true;
        }
    
        @Override
        public boolean isAccountNonLocked() {
            return true;
        }
    
        @Override
        public boolean isCredentialsNonExpired() {
            return true;
        }
    
        @Override
        public boolean isEnabled() {
            return true;
        }
    }

           还有两个登陆后去向类,这两个类就随意写了,根据业务需求来写即可。其实spring security本身也已经实现了默认的登录失败和登录成功去向,但是在前后端分离下,后端并不负责页面的跳转或者错误提示等。后端也会返回带有登录信息的Json格式的数据给前端,所以要想满足这些需求就需要实现AuthenticationFailureHandler和AuthenticationSuccessHandler接口。值得注意的是MyAuthenticationSuccessHandler类中的onAuthenticationFailure方法可以打印异常(错误)信息。

    @Component
    public class MyAuthenticationFailHandler implements AuthenticationFailureHandler {
        @Override
        public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
            // 允许跨域
            httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
            // 允许自定义请求头token(允许head跨域)
            httpServletResponse.setHeader("Access-Control-Allow-Headers", "token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");
            httpServletResponse.getWriter().write(200);
        }
    }
    
    @Component
    public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
    
        @Override
        public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
            // 允许跨域
            httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
            // 允许自定义请求头token(允许head跨域)
            httpServletResponse.setHeader("Access-Control-Allow-Headers", "token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");
            httpServletResponse.getWriter().write(e.getMessage());
        }
    }

           接下来就是前端的登录代码,该action需要和WebSecurityConfiguration类中loginProcessingUrl(“/user/login”)的值一致。当然了下面的代码也可以用ajax来替代,不一定要用from表单登录。

    <form action='/user/login' method='POST'>
        <table>
            <tr>
                <td>User:</td>
                <td><input type='text' name='username' value=''></td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='password'/></td>
            </tr>
        </table>
    </form>

           以上就是简单的spring security在前后端分离下的运用例子。不过光是这么写,不明白的人看了还是一头雾水,也不能充分展示spring security的强大。

    --------------------------------------

    重点再说下WebSecurityConfiguration类
    在WebSecurityConfiguration类中需要把自定义的MyAuthenticationSuccessHandler和MyAuthenticationFailHandler去向类注入,并在loginProcessingUrl(“/user/login”)后面激活这两个类的使用

    @Autowired
    private MyAuthenticationSuccessHandler myAuthenticationSuccessHandler;
    @Autowired
    private MyAuthenticationFailHandler myAuthenticationFailHandler;
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin().loginProcessingUrl("/user/login")
                // 自定义的登录验证成功或失败后的去向
                .successHandler(myAuthenticationSuccessHandler).failureHandler(myAuthenticationFailHandler)
                // 禁用csrf防御机制(跨域请求伪造),这么做在测试和开发会比较方便。
                .and().csrf().disable();
    }

    自定义MyUserDetailsService类也需要在WebSecurityConfiguration类中注入和激活使用

    @Bean
    UserDetailsService customUserService() {
        return new MyCustomUserService();
    }
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // 使用自定义UserDetailsService
        auth.userDetailsService(customUserService()).passwordEncoder(new BCryptPasswordEncoder());
    }

           上面的代码有个.passwordEncoder(new BCryptPasswordEncoder())这个意思就是指定密码加密的方式。这里采用的是BCrypt加密方式。换句话说,当spring security获取到你前端传过来的密码时,就自动用BCrypt加密密码,然后拿去和数据库密码匹对。所以在数据库里存的密码也得是用BCrypt加密后的密码。
           如果这么说,是不是也可以指定自定义加密方式呢。是可以的,实现也很简单,只要实现PasswordEncoder接口即可。在把.passwordEncoder(new BCryptPasswordEncoder())更改为.passwordEncoder(new MyPasswordEncoder())即可。

    @Component
    public class MyPasswordEncoder implements PasswordEncoder {
    
        @Override
        public String encode(CharSequence charSequence) {
            return SecurityUtil.encrypt(charSequence.toString());
        }
    
        @Override
        public boolean matches(CharSequence charSequence, String s) {
            return encode(charSequence).equals(s);
        }
    }

    接下来说下这个

    http.formLogin().loginProcessingUrl("/user/login")
              // 自定义的登录验证成功或失败后的去向
              .successHandler(myAuthenticationSuccessHandler).failureHandler(myAuthenticationFailHandler)
              // 禁用csrf防御机制(跨域请求伪造),这么做在测试和开发会比较方便。
              .and().csrf().disable();

           关于这个一般来写的话都是有http.forLogin().loginPage(“/login”)啥的,这个是自定义登录页面,默认为/login。说白了就是你访问spring security保护的请求时候如果发现你没有登录,就会跳转到指定页面,使用默认或者不写的话spring security就会跳转到已经帮你写好了一个默认登录页面了。在前后端分离下,这个就不管了。loginProcessingUrl(“/user/login”)就是登录请求。

    光是看上面的似乎有点囫囵吞枣,建议在看另一篇博文,主要分析登录验证的过程和一些源码的浅析。(写的不咋滴,但是认真看完后我觉得应该会有所收获)
    SpringSecurity登录验证步骤和源码浅析

    展开全文
  • 使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理 IPMI 是一种可扩展的标准,它定义了如何监控硬件和传感器、控制系统部件以及记录重大事件,随着 ipmi 技术在服务器中的应用,利用 ipmi 的众多优势就成为...

    使用ipmitool实现Linux系统下对服务器的ipmi管理

    IPMI 是一种可扩展的标准,它定义了如何监控硬件和传感器、控制系统部件以及记录重大事件,随着 ipmi 技术在服务器中的应用,利用 ipmi 的众多优势就成为服务器管理特别是集群管理中不可缺少的部分。本文首先介绍了 ipmi 的一些基本概念,然后给出了如何利用 ipmitool 这一工具实现 linux 系统中ipmi 管理的具体步骤和方法。

    1.简介

    IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller 如图1),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

    图 1
    图 1

    ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。Ipmitool 有两种使用方式(如 表1)

    表 1
    表 1

    2. 使用 ipmi 的先决条件

    想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都满足:

    2.1 服务器硬件本身提供对 ipmi 的支持

    目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 1.5,但并不是所有服务器都支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 ipmi,也就是说服务器在主板上要具有 BMC 等嵌入式的管理微控制器。

    2.2 操作系统提供相应的 ipmi 驱动

    通过操作系统监控服务器自身的 ipmi 信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。

    2.3 ipmi 管理工具

    本文选择的是 Linux 下的命令行方式的 ipmi 平台管理工具 ipmitool

    3. 实现对 Linux 服务器的 ipmi 管理

    利用 ipmitool 实现对服务器的 ipmi 管理有两种方式:①通过 OS 监控本地服务器;②通过网络监控远程服务器。本文针对这两种监控方式分别给出了利用 ipmi 本地获取 cpu温度和远程控制电源的例子。

    3.1 实现对本地服务器的管理

    3.1.1 系统结构(如图 2)

    图 2
    图 2

    特点(如表2)

    表 2
    表 2

    3.1.2 配置本地操作系统支持 ipmi

    文中采用的 OS Redhat 9.0 在内核中已经提供了对 ipmi 的支持,这里只需完成如下步骤:

    ① 载入支持 ipmi 功能的系统模块

    注意:必须先载入模块,这样内核才能在②中识别 ipmidev 设备

    ② 创建字符设备 node,使 ipmitool 可以通过驱动程序访问 ipmi 系统接口

    3.1.3 安装 ipmitool,获取 cpu 温度信息

    ①依次执行如下命令,安装 ipmitool

    ② 通过 ipmitool 命令获取 cpu 温度

    3.2 实现对远程服务器的管理

    3.2.1 系统结构(如图 3)

    图 3
    图 3

    特点(如表 3)

    表 3
    表 3

    3.2.2 在被监控服务器端,把 ip 地址写入 bmc 芯片中

    ipmi 的远程监控是通过向与 bmc 相连的网络接口(如图 1:②)发送 udp 数据包实现的,udp 数据包的定位是通过把 ip 地址写入 bmc 芯片来实现,而这需要通过本地的 ipmi 系统接口来完成连。先通过 3.1.2 与 3.1.3 节的步骤在服务器端实现本地 ipmi 系统接口并安装 ipmitool 管理工具。

    通过 ipmitool-1.5.9.tar.gz 附带的 bmcautoconf.sh 脚本(默认安装位置 /usr/local/bin/)配置被监控服务器的 ipmi 网络接口(IPMI-over-LAN),并把 ip 地址等信息写入 bmc 中,过程如下:

    ①用 ipmitool 确定服务器的 LAN channel

    从结果可以看出“Channel Medium Type : 802.3 LAN”,channel 7 是 LAN channel

    注意:Intel SHASTA SPSH4 服务器的 channel 7 是对应 eth0 网卡的,所以网络连接时必须选择 eth0(100M网卡)进行 ipmi 管理。

    ②根据确定的 LAN channel 号和网卡修改 bmcautoconf.sh 脚本

    注意:上述改动是根据①中确定的LAN channel、对应的 nic 以及 ipmitool 的具体安装位置进行的。

    ③运行 bmcautoconf.sh,把 ip 等信息写入 bmc

    ④确定 bmcautoconf.sh 的结果

    ⑤设置网络访问密码

    注意:完成了上述步骤后,被监控服务器上就不再需要 ipmi 系统接口了,可以把 3.1.2 节中的模块卸载,甚至可以重装一个全新的无ipmi 支持的操作系统。

    3.2.3 在监控客户端安装 ipmitool,并远程操作服务器电源

    ①依次执行如下命令,安装 ipmitool

    ②通过 ipmitool 命令远程控制服务器电源

    注意:通过 ipmitool 还可以监控风扇、机箱等众多相关信息,具体的使用方式见 ipmitool manpage

    参考资料

    转载自:http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm2/

    展开全文
  • IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱...
    

    1.简介

    IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller 如图1),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

    图 1
    图 1

    ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。Ipmitool 有两种使用方式(如 表1)

    表 1
    表 1

    2. 使用 ipmi 的先决条件

    想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都满足:

    2.1 服务器硬件本身提供对 ipmi 的支持

    目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 1.5,但并不是所有服务器都支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 ipmi,也就是说服务器在主板上要具有 BMC 等嵌入式的管理微控制器。

    2.2 操作系统提供相应的 ipmi 驱动

    通过操作系统监控服务器自身的 ipmi 信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。

    2.3 ipmi 管理工具

    本文选择的是 Linux 下的命令行方式的 ipmi 平台管理工具 ipmitool


    3. 实现对 Linux 服务器的 ipmi 管理

    利用 ipmitool 实现对服务器的 ipmi 管理有两种方式:①通过 OS 监控本地服务器;②通过网络监控远程服务器。本文针对这两种监控方式分别给出了利用 ipmi 本地获取 cpu温度和远程控制电源的例子。

    3.1 实现对本地服务器的管理

    3.1.1 系统结构(如图 2)

    图 2
    图 2

    特点(如表2)

    表 2
    表 2

    3.1.2 配置本地操作系统支持 ipmi

    文中采用的 OS Redhat 9.0 在内核中已经提供了对 ipmi 的支持,这里只需完成如下步骤:

    ① 载入支持 ipmi 功能的系统模块

    注意:必须先载入模块,这样内核才能在②中识别 ipmidev 设备

    ② 创建字符设备 node,使 ipmitool 可以通过驱动程序访问 ipmi 系统接口

    3.1.3 安装 ipmitool,获取 cpu 温度信息

    ①依次执行如下命令,安装 ipmitool

    ② 通过 ipmitool 命令获取 cpu 温度

    3.2 实现对远程服务器的管理

    3.2.1 系统结构(如图 3)

    图 3
    图 3

    特点(如表 3)

    表 3
    表 3

    3.2.2 在被监控服务器端,把 ip 地址写入 bmc 芯片中

    ipmi 的远程监控是通过向与 bmc 相连的网络接口(如图 1:②)发送 udp 数据包实现的,udp 数据包的定位是通过把 ip 地址写入 bmc 芯片来实现,而这需要通过本地的 ipmi 系统接口来完成连。先通过 3.1.2 与 3.1.3 节的步骤在服务器端实现本地 ipmi 系统接口并安装 ipmitool 管理工具。

    通过 ipmitool-1.5.9.tar.gz 附带的 bmcautoconf.sh 脚本(默认安装位置 /usr/local/bin/)配置被监控服务器的 ipmi 网络接口(IPMI-over-LAN),并把 ip 地址等信息写入 bmc 中,过程如下:

    ①用 ipmitool 确定服务器的 LAN channel

    从结果可以看出“Channel Medium Type : 802.3 LAN”,channel 7 是 LAN channel

    注意:Intel SHASTA SPSH4 服务器的 channel 7 是对应 eth0 网卡的,所以网络连接时必须选择 eth0(100M网卡)进行 ipmi 管理。

    ②根据确定的 LAN channel 号和网卡修改 bmcautoconf.sh 脚本

    注意:上述改动是根据①中确定的LAN channel、对应的 nic 以及 ipmitool 的具体安装位置进行的。

    ③运行 bmcautoconf.sh,把 ip 等信息写入 bmc

    ④确定 bmcautoconf.sh 的结果

    ⑤设置网络访问密码

    注意:完成了上述步骤后,被监控服务器上就不再需要 ipmi 系统接口了,可以把 3.1.2 节中的模块卸载,甚至可以重装一个全新的无ipmi 支持的操作系统。

    3.2.3 在监控客户端安装 ipmitool,并远程操作服务器电源

    ①依次执行如下命令,安装 ipmitool

    ②通过 ipmitool 命令远程控制服务器电源

    注意:通过 ipmitool 还可以监控风扇、机箱等众多相关信息,具体的使用方式见 ipmitool manpage

    展开全文
  • 3 研究挑战与展望3.1 研究挑战虽然新型硬件环境为数据管理与分析提供了新的设计维度,但是不论从个体的新型硬件发展前景抑或从整体的与现有体系的整合方式来看,都具有较大的不确定性。这些新型硬件能否给上层软件...
  • 下载好之后拖到到 liunx 的目录解压,并添加777权限: 1. unzip elasticHD_linux_amd64.zip 2. 修改权限:chmod -R 777 ElasticHD 3. 运行: ./ElasticHD -p 127.0.0.1:9800 运行之后将会出现图所示内容则...
  •  Spring由三种途径事物进行管理:编程式事务管理、声明式事务管理和AOP事务管理。其中AOP事务管理又分AOP注解事务管理和AOP XML配置两种,这里记录下述其 中的AOP XML配置管理,这也是spring最推荐的方式。  ...
  • oracle用户x有一表a,怎么赋予表a里面的用户b这个表的管理权限?我是用x登录的,现在想给表a里面的用户b,赋予管理这个表的权限?表下面的其他用户建的表b是不是也有管理权限?怎么写sql语句啊?求救
  • M公司承担了某大学图书馆存储及管理系统的开发任务,项目周期4 个月。 小陈是M 公司的员工,半年前入职。在校期间,小陈跟随导师做过两年的软件开发,具有很好的软件开发基础。领导小陈很信任,任命小陈担任该...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,002
精华内容 31,600
关键字:

对下管理