精华内容
下载资源
问答
  • 目录 2.1 虚拟机的结构 2.2 创建恶意代码分析机 2.2.1 配置VMware 2.2.2 断开网络 2.2.3 创建主机模式网络 ...2.2.4 使用多个虚拟机 ...2.3.4 从虚拟机传输文件 2.4 使用VMware进行恶意代码分析的风险 2.5 记录...

    目录

    2.1 虚拟机的结构

    2.2 创建恶意代码分析机

    2.2.1 配置VMware

    2.2.2 断开网络

    2.2.3 创建主机模式网络

    2.2.4 使用多个虚拟机

    2.3 使用恶意代码分析机

    2.3.1 让恶意代码连接到互联网

    2.3.2 连接和断开外围设备

    2.3.3 拍摄快照

    2.3.4 从虚拟机传输文件

    2.4 使用VMware进行恶意代码分析的风险

    2.5 记录/重放:重复计算机运行轨迹

    2.6 小结


     

    专用的物理机和虚拟机,都应该被连接到一个隔离网络

    有些可能会检测虚拟机,来表现出不同的行为来阻扰分析

    2.1 虚拟机的结构

     

    2.2 创建恶意代码分析机

    安装VMTools

    虚拟机(VM)-->安装VMware Tools(Install VMware Tools)

    会让鼠标和键盘工作更加敏捷,还可以共享文件夹,拖放文件

     

    2.2.1 配置VMware

    VWware提供了几种网络选项,后面会介绍到

    2.2.2 断开网络

    可以在配置中选择是否自动连接网络

     

    2.2.3 创建主机模式网络

    主机模式(Host-only)网络,可以在宿主操作系统和客户操作系统之间创建一条隔离的私有局域网,在分析恶意代码时,这是通常采用的联网方式。主机模式的局域网并不会连接到互联网,这意味着恶意代码会被包含在你的虚拟机中,同时也允许某些网络连接

    注意:配置宿主计算机时,最好是确保打上了最新的补丁

    当启用主机模式时,VMware将在宿主计算机和虚拟机中都创建一个虚拟网络适配器。然后将他们进行连接,而与宿主的物理网络适配器没有任何关联,宿主计算机的物理网络适配器仍然连接到互联网访问其他外部网络

     

    2.2.4 使用多个虚拟机

    最后一种配置方组合了所有最好的选项。它要求多个虚拟机通过一个私有局域网进行连接,但是断开这个局域网和互联网以及宿主主机的连接,这样恶意代码可以连接到网络,但是不会连接到任何业务主机。也就是虚拟机之间进行连接,与物理机没有关系

    把虚拟机加到分组之后,可以统一管理他们的电源与联网设置。

    要创建一个新的虚拟机分组,选择FIle-->New-->Team

     

    2.3 使用恶意代码分析机

    为了尽可能检查所分析的恶意代码样本的功能,必须要模拟出恶意代码所依赖的所有网络服务

    比如需要连接到一个HTTP服务器,下载其他恶意代码,这就需要为它提供一个域名系统(DNS)服务器的访问,来解析出服务器的IP地址,比如就是一个响应请求的HTTP服务器。

    2.3.1 让恶意代码连接到互联网

    在还没有弄清楚恶意代码联网的时候会做些什么之前,不要直接连接到互联网上

    将VMware连接到互联网的最普遍的方式,是使用桥接模式网络适配器,它允许虚拟机与物理机器一样连接到相同的物理网卡上。另一种连接互联网的方式是使用VM的网络地址转换(NAT)模式。

    NAT模式会共享宿主机器与互联网之间的IP连接。宿主机器就像是一个路由器,负责对所有来自虚拟机的连接进行翻译,让它们看起来像是从宿主机的IP地址发出的一样。这种模式在宿主机连接网络而虚拟机难以获得配置连接到同一网络的场景下很有用

    例如宿主机器使用的是无线网卡,虚拟机就可以很容易通过NAT模式连接到网络,甚至无线网络启用了WIFI保护访问(WPA)或者WEP协议。又或者主机的连接网络只允许特定的网络适配器连接,NAT允许虚拟机通过宿主主机进行连接,从而绕过网络的访问控制。

    2.3.2 连接和断开外围设备

    外围设备,比如CD-ROM  USB,对虚拟机构成一个特殊问题,大多数设备要么被连接到宿主机器上,要么被连接到虚拟机上,但不能同时连接两者

    有时候虚拟机处于活跃状态,插上USB之后就被识别到虚拟机中了,可以设置

    VM-->Setting-->USB Controller,取消选中Automatically connect new USB devices复选框,就可以防止USB自动连接到虚拟机

    2.3.3 拍摄快照

    在配置好环境之后先保存一个快照,作为纯净的环境

    快照可以有分支,当在样本1的时候回到了纯净环境,再从纯净环境保存了另一个快照,那么就会有分支

     

    2.3.4 从虚拟机传输文件

    在恢复快照之前,把一些重要文件拖出来保存再恢复快照

    一种方法是直接拖拽文件

    另一种是利用VMware的共享文件夹。VMware的共享文件夹在客户操作系统和宿主操作系统上都能够访问,类似windows的共享文件夹

     

    2.4 使用VMware进行恶意代码分析的风险

    一些恶意代码会检测虚拟机环境,这会导致可能走向不同的流程

    共享文件夹和文件的拖拽也可能存在漏洞,所以虚拟机最好是打好了最新的补丁

     

    2.5 记录/重放:重复计算机运行轨迹

    记录/重放:可以记录所发生的一切,在重放期间,每一个原始记录到的指令都会被同样的执行

    视频捕捉功能:可以记录屏幕的视频输出,它实际地执行了操作系统和应用软件的每一条CPU指令,而且不像一个视频输出,你可以在任何点上中断执行,然后与计算机进行交互,并且对虚拟机进行修改。比如在一个没有undo操作的程序中犯了一个错,你可以和恢复到犯错之前的一个状态

    后续将在第八章详细介绍这个功能

     

    2.6 小结

    在分析的时候要注意已经是在一个安全的环境下运行恶意代码了。

     

     

     

     

     

     

    展开全文
  • 一、环境介绍 本机:Macos Big Sur系统 ...我们最终想要达到的效果就是,我们在虚拟机linux上的/data 目录下编写代码,我们mac系统上/Users/SH-Server/vm-vagrant 文件也发生相应改变。 相应的,.

    一、环境介绍

    本机:Macos Big Sur系统

    虚拟机软件:vmware-fusion

    虚拟机上虚拟的linux - centos7 系统

     

    二、实现的效果

    在mac上创建一个/Users/SH-Server/vm-vagrant目录,作为之后和虚拟机linux系统 /data 文件夹的共享目录。

    我们最终想要达到的效果就是,我们在虚拟机linux上的/data 目录下编写代码,我们mac系统上/Users/SH-Server/vm-vagrant 中的文件也发生相应改变。

    相应的,在mac上的共享目录/Users/SH-Server/vm-vagrant 中创建编写文件,虚拟机中的linux /data下的文件和目录也同样发生变化。

    即二者是同步的。

     

    三、实现

    1、 Mac上命令行的操作

    # Mac上创建用于和虚拟机的linux共享的目录
    mkdir /Users/SH-Server/vm-vagrant
    # 赋予权限
    chmod -R 777 /Users/SH-Server/vm-vagrant

     

    2、在mac上vmware-fusion上的操作

     

    然后,添加共享文件夹,这里选择的是macos上我们之前创建的vm-vagrant目录,并且在左侧重命名为data,你也可以根据自己的编程习惯重命名为其他的名称。

     

     

    3、在虚拟机上Linux的操作

    我们在mac上设置好共享目录后,该目录就在 /mnt/hgfs 下。

    我们在该目录执行ls,会发现,多出了一个目录,即 data目录

    默认这个目录权限是不够的,不足以让我们操作该目录,因此我们需要修改该目录权限。

     

    (1)赋予共享目录777权限:

    chmod -R 777 /mnt/hgfs/data

    (2)软连接到根目录

    注意,如果根目录下已经有data目录,要么删除掉,要么你软连接到其他目录。

    ln -s /mnt/hgfs/data /

    (3)效果

    在虚拟机 linux 上多出了一个/data目录,在/data目录下touch一个index.php文件,我们去mac上的共享目录/Users/SH-Server/vm-vagrant,会发现同时也多了一个index.php文件。

    我们在mac上的/Users/SH-Server/vm-vagrant 目录下创建一个目录或文件,虚拟机上的linux中,/data目录下也多了相应目录或文件。

    说明设置共享目录成功,已经实现了macos和虚拟机linux的目录共享。

     

    (4)如何取消该软连接

    第一步:操作vmware-fusion,取消该目录的共享

    标的3个地方,任选其一即可。

    第二步:操作虚拟机上的linux,删除掉相应目录。

    比如,我上面设置的Linux共享目录在/data,那就删掉/data目录即可

    rm -rf /data

     

     

    四、其他同步方案:

    1、在macos的系统偏好设置 > 共享中设置共享目录,然后在虚拟机linux mount挂载

    有无数的坑,效果并不好

     
    2、使用 samba 实现mac和虚拟机linux目录共享

    和第一种差不多,并不好用

     
    3、使用vagrant + virtualbox管理虚拟机集群

    在mac上有很多莫名其妙的错误,同样被pass掉。

     
    4、使用phpstorm的development tools开发工具去同步服务器代码

    单纯考虑mac和一台虚拟机linux代码同步,其实是可行的。

    但如果需要mac同时和多个虚拟机linux系统进行文件目录同步,即一个大的linux 虚拟机集群,则操作上将变得很麻烦。

     
    经过多番实践,最后还是认为这种方法最好用,因此记录下来。

     

    文章来源于:Mac 与虚拟机中的linux集群共享文件目录设置

     

     

     

    展开全文
  • 虚拟机创建

    2020-08-05 14:51:27
    下载好一个操作系统.iso镜像文件,并将其复制到刚才创建的kvm目录中创建虚拟硬盘。qemu-img create -f <格式> <硬盘名字> <硬盘大小> qemu-img create -f qcow2 xxxxx.qcow2 64

    1 安装概述
    在Linux上,我们使用qemu和virsh搭建虚拟机来进行代码的编译、安装和测试等工作。
    1.1 安装前准备

    1. 确保你已经安装了qemu和virsh。
    2. 新建一个名为kvm的目录,之后我们的一切操作都在这个目录下进行。
    3. 下载好一个操作系统.iso镜像文件,并将其复制到刚才创建的kvm目录中。
    4. 创建虚拟硬盘。

      qemu-img create -f <格式> <硬盘名字> <硬盘大小>

      qemu-img create -f qcow2 xxxxx.qcow2 64G
      安装时请自行修改名字、虚拟磁盘等各项参数。
      1.2 安装流程
      1.2.1 使用VNC远程安装
      将下列命令保存为脚本create_vm.sh,
      #!/bin/bash
      ##@para: name iso vncport

    if [ $# != 3 ]
    then
    echo "Usage: sudo ./create_vm.sh "
    exit 1
    fi
    virsh destroy $1
    virsh undefine $1
    virt-install
    –name $1
    –ram 4096
    –file ./$1.qcow2
    –cdrom $2
    –vcpus=4
    –vnc --vncport=$3 --vnclisten=0.0.0.0

    然后,执行如下命令
    sudo ./create_vm.sh <虚拟机名> <操作系统镜像文件路径> <端口号>
    sudo ./create_vm.sh xxxxx ubuntu-16.04.6-server-amd64.iso 50001

    回到一台主机,下载并安装VNC Viewer软件。
    启动VNC Viewer,输入ip:port。 ip为虚拟机所在设备的ip地址,port即为刚才创建虚拟机时指定的端口。按enter键确认,然后开始安装。

    按照图像的引导一步步安装即可。

    需要注意的一个问题是,有些系统镜像在安装过程中会出现busybox-initramfs安装失败这一麻烦问题,需要退出重装。这个问题可能是由于中文相关问题引起的,第一步选择语言时选择英文就不会出现这个问题。请务必选择英语安装,这样,安装系统和vpp编译过程都会顺利很多。
    1.2.2 复制虚拟机
    复制虚拟机,也就是通过复制已经装好系统的虚拟硬盘来安装虚拟机。
    将下列命令保存为脚本copy_vm.sh,
    #!/bin/bash
    usage: sudo ./copy_vm.sh
    echo ‘begin copying disk…’
    cp $1.qcow2 $2.qcow2
    echo ‘done copy disk…’
    virsh destroy $2
    virsh undefine $2
    echo ‘begin installing…’
    virt-install
    –name $2
    –ram 4096
    –vcpus 4
    –disk $2.qcow2
    –import
    –graphics=none
    执行命令
    sudo ./copy_vm.sh
    等待复制磁盘并启动虚拟机即可。因为是复制而来的,所以除了外部网口配置,新设置的内存大小等,新的虚拟机系统具有与原虚拟机一样的配置,原虚拟机中已经安装好的软件新虚拟机中同样可以正确使用。如果原虚拟机已经配置好console,新虚拟机也是直接支持console的。为了消除IP冲突,我们可能还需要为新虚拟机重新配置网络。
    2 配置概述
    2.1 配置串口(console)
    安装好虚拟机之后,需要配置串口,我们才能在主机通过终端来连接虚拟机。
    执行命令
    sudo vim /etc/default/grub
    搜索GRUB_CMD,并将
    GRUB_CMDLINE_LINUX_DEFAULT=""
    修改为
    GRUB_CMDLINE_LINUX_DEFAULT=“console=tty0 console=ttyS0,115200n8”
    保存之后执行命令
    sudo update-grub
    然后reboot,之后我们就可以从终端登录虚拟机了。
    登录方式
    virsh console <虚拟机名>

    图2-1 串口登录界面
    这时候若按其他键无反应,按ctrl+]可退出(请记住,在虚拟机中也是通过ctrl+] 组合键来退出虚拟机),按enter 键即可连接到虚拟机。
    2.2 配置网络(ip,route,dns)
    以ubuntu16.04为例,编辑网络配置文件
    sudo vim /etc/network/interfaces
    按下面格式填入ip,网关,域名服务器等信息
    auto eth0 #要设置的网卡
    iface eth0 inet static #设置静态IP;如果是使用自动IP用dhcp,后面的不用设置,一般少用
    address xxx.xxx.xxx.xxx #IP地址
    netmask xxx.xxx.xxx.xxx #子网掩码
    gateway xxx.xxx.xxx.xxx #网关
    dns-nameservers 114.114.114.114 8.8.8.8 # 域名服务

    保存之后,重启网络服务
    /etc/init.d/networking restart
    sudo service network restart
    如果重启网络服务失败,就重启操作系统。之后虚拟机就可以连接到网络了。

    网络配置完成之后,直接通过ssh来连接虚拟机操作起来会方便许多。
    2.3 配置CPU、内存和磁盘
    查看虚拟机配置信息和状态

    图2 3 查看虚拟机配置
    2.3.1 配置CPU
    设置最大CPU颗数
    virsh setvcpus --maximum –config
    调整cpu颗数(已经开启的主机只增不减,并且不能超过最大CPU颗数)
    virsh setvcpus [domain-name, domain-id or domain-uuid] [num]
    2.3.2 内存配置
    #设置最大内存使用量,以MB为单位。
    virsh setmaxmem size –config
    调整内存使用量,开机状态也可以减少内存,并且立即生效
    virsh setmem [domain-id or domain-name] [number]
    2.3.3 磁盘配置
    #查看磁盘大小
    qemu-img info <虚拟磁盘文件路径>
    下面以qcow2格式为例,讲述虚拟磁盘扩容以及如何将新增容量扩展到虚拟机文件系统。
    2.3.3.1 虚拟磁盘扩容
    #调整磁盘大小。修改需要重启才能生效,因此,建议在关机状态下进行。
    qemu-img resize <虚拟磁盘文件路径> <new_size>
    增加20G
    qemu-img resize <虚拟磁盘文件路径> +20G
    2.3.3.2 将容量扩展到文件系统
    磁盘扩容之后,需要在虚拟机中进行一些操作,才能将新增磁盘容量扩展到虚拟机的文件系统。
    重启虚拟机之后,在虚拟机中输入命令 fdisk -l 查看磁盘状况。可以看到,磁盘容量已经增加了我们预期的容量,但是分区大小没有变化。因此,我们需要手动分区并挂载或对原有分区进行扩容操作,才能将新增磁盘容量扩展到虚拟机的文件系统。
    下面是操作步骤:

    1. 创建分区
      fdisk /dev/sda # 需要su权限,参数为上面fdisk -l找到的你想要进行分区的磁盘
    2. 创建物理卷
      pvcreate /dev/sda3 # 假设你创建了一个叫做sda3的分区
      如果提示找不到 /dev/sda3,请输入命令sudo partprobe
    3. 使用vgscan 查询物理卷
      需要su权限,假设查到的结果为ubuntu-vg
    4. 使用新增的物理卷扩展ubuntu-vg
      sudo vgextend ubuntu-vg /dev/sda3
    5. 扩展lv,这里假设上面新建的分区大小是20G,这里跟的是要扩展分区名
      sudo lvextend -L +20G /dev/mapper/ubuntu–vg-root
    6. 让文件系统识别新添加的磁盘文件系统
      sudo resize2fs /dev/mapper/ubuntu–vg-root # 适用于ext4文件系统

      sudo xfs_growfs /dev/mapper/ubuntu–vg-root # 适用于xfs文件系统
      扩容之前

    扩容之后

    !关于缩容
    qemu-img resize 需要加 --shrink参数才能对磁盘进行缩容,并且这样操作可能会删除磁盘上的数据,对于想要继续使用的虚拟机,对其磁盘进行缩容是不明智的,因为不仅可能会删除数据,还会导致系统无法继续使用。因此,请谨慎操作。
    2.4 网桥和流表配置
    Linux内核支持网口桥接,。通常,当我们创建虚拟机后,宿主机上有一个名为br0的网桥,连接了宿主机的物理网卡和虚拟机的管理网口,从而使虚拟机可以与外界进行通信。
    ovs(Open VSwitch)是另一套配置管理虚拟网络的强大工具。下面我们使用它来创建和管理虚拟网桥,并配置转发流表。以下内容假设你的机器上已安装了ovs组件。
    2.4.1 创建网口并接入网桥
    执行命令创建一个你自己的虚拟网桥
    ovs-vsctl add-br
    然后编辑虚拟机的配置文件
    sudo virsh edit
    查找interface标签,将下面代码粘贴到interface标签后面,并把其中的网桥名称修改为你刚才创建的网桥。

    保存修改之后,virsh会为我们自动完成MAC地址等配置。 关闭虚拟机, virsh shutdown 然后开机,登录,执行ifconfig命令,可以看到虚拟机新增了一个网口。 宿主机里面执行命令 ovs-vsctl show 可以看到,之前创建的网桥上已经多了一些端口,这些端口都有一个vnet开头的名字,比如vnet33。 2.4.2 流表的组成 每条流表规则由一些字段组成,可以分为基础字段、匹配字段和动作字段三部分。 下面是一些常用的字段的解释,想要了解更多字段,请查阅OVS官网

    基础字段
    字段 描述
    priority=priority 标识流表的优先级,范围为0-65535,值越大,优先级越高
    hard_timeout=sec 流表可存在的时间。设置此值后,流表会在到达给定时间后被删除。
    匹配字段
    字段 描述
    in_port=port 标识匹配接收数据包的端口
    dl_type=ethertype 匹配数据包的二层协议类型,IP数据包为0x0800,IPv6数据包为0x86dd,ARP数据包为0x0806
    动作字段
    字段 描述
    output:port 将数据包从port接口发送
    normal 将数据包按照设备上的正常L2/L3层处理方式进行处理
    in_port 将数据包从接收的接口发送出去
    all 将数据包发送到除接收接口外的所有接口
    mod_vlan_vid:vlan_vid 修改数据包的vlan id
    2.4.3 配置流表
    如下命令可以在网桥br-xxx上增加一项流表规则,它的具体含义是:从vnet83端口收到的报文从vnet89端口发出。
    ovs-ofctl add-flow br-xxx “in_port=vnet83 action=output:vnet89”
    我们还可以使用此命令添加一些其他规则,比如丢弃从vnet87端口收到的报文
    ovs-ofctl add-flow br-xxx “in_port=vnet87 action=drop”

    配置流表之后,我们可以使用tcpreplay向特定端口发包,tcpdump收包来验证我们的虚拟网桥是否如我们希望的那样处理报文。
    3 Virsh常用命令
    本节列举了virsh常用命令,以及virt-install相关参数的解释。这些命令可用来对宿主机上的虚拟机进行配置和管理,大多需要超级权限来执行。

    3.1 Virsh常用命令手册
    命令 描述
    virsh start 启动虚拟机
    virsh reboot 重启虚拟机
    virsh shutdown 正常关闭虚拟机
    virsh destroy 强制(直接断电)关闭虚拟机
    virsh start --console 启动并通过串口进入虚拟机
    virsh console 连接虚拟机
    virsh suspend 挂起虚拟机
    virsh resume 恢复被挂起的虚拟机
    virsh save file 将虚拟机的运行状态存储到文件file中
    virsh restore file 从文件file恢复被存储状态的虚拟机的状态
    virsh list [–all] 列举[所有]虚拟机
    virsh dominfo 显示虚拟机的基本配置和状态信息
    virsh cpu-stats 查看宿主机和虚拟机的 CPU 运行时间统计
    virsh vcpuinfo 查看实例 vcpu 和 物理 cpu 的对应关系
    virsh autostart 子机随宿主机(母机)启动而启动
    virsh undefine 解除主机标记
    virsh edit 编辑虚拟机的配置文件,如修改CPU、内存,网口等
    virt-clone 克隆虚拟机
    virt-install 安装虚拟机

    3.2 virt-install 参数解释
    选项 描述
    –name, -n 设定虚拟机名字
    –ram 内存大小,以MB为单位
    –disk 指定虚拟硬盘文件
    –cdrom 指定光盘或iso文件路径
    –vcpus 启动并通过串口进入虚拟机
    –location 指定安装文件url,与 --cdrom 只能二选一
    –extra-args 需要在指定 --location参数条件下才能使用
    4 OVS常用命令
    ovs的大多命令都需要超级权限才能执行。
    4.1 网桥相关
    网桥相关命令以ovs-vsctl开头
    命令 描述
    ovs-vsctl add-br 创建虚拟网桥
    ovs-vsctl del-br 删除虚拟网桥
    ovs-vsctl add-port 给虚拟网桥添加端口
    ovs-vsctl del-port 删除虚拟网桥的某一端口
    ovs-vsctl show 显示所有虚拟网桥及其端口
    ovs-vsctl list-br 列举所有虚拟网桥的名字

    4.2 流表相关
    流表相关的命令以ovs-ofctl开头
    命令 描述
    ovs-ofctl dump-flows 输出网桥中所有流表项
    ovs-ofctl dump-flows 输出网桥中匹配的流表项
    ovs-ofctl add-flows 在网桥上添加一条流表
    ovs-ofctl del-flows 删除网桥上的全部流表
    ovs-ofctl del-flows 删除网桥上的一条流表
    ovs-ofctl mod-flows 修改网桥的流表项
    ovs-ofctl dump-ports 输出端口统计信息
    ovs-ofctl dump-ports-desc 输出端口描述信息
    ovs-ofctl show 输出网桥上所有连接的设备及其端口号

    关于磁盘扩容
    1、主机上先关虚拟机,执行qemu-img resize /XX_copy1.qcow2 32G,进行扩容
    2、启动虚拟机
    3、进入虚拟机,格式化 fdisk /dev/vda1(d 1 n n p 1 p w)
    4、resize2fs /dev/vda1

    展开全文
  • 1. 下载安装包 : https://www.mongodb.com/download-center#community2. /usr/local 解压 : tar -xzvf mongodb-*****.tgz3. 重命名解压包 : mv mongodb-**** mongodb4.... 创建文件 : touch /data/logs/mo...


    2. 在 /usr/local 中解压 : tar -xzvf mongodb-*****.tgz
    3. 重命名解压包 : mv mongodb-**** mongodb
    4. 创建目录 : mkdir -p /data/db
    5. 创建文件 : touch /data/logs/mongod.log
    6. 创建配置文件 : vi /etc/mongod.conf :

       端口号 : port=27017
       数据路径 : dbpath=/data/db

       日志路径 : logpath=/data/logs/mongod.log
       后台运行 : fork=true

       日志输出方式 : logappend=true
       #开启认证 : auth=true
       journal=true
       bind_ip=192.168.249.128 // 通过ifconfig查到的IP值

    7. 环境变量 : vi /etc/profile : export PATH=/usr/local/mongodb/bin:$PATH

    8. 在每个服务器上都执行,创建副本集成员 : mongod --replSet spock -f /etc/mongod.conf --fork //"spock"为指定的副本       集标识
    9. 启动 : mongo --nodb
    10.  config = {"_id" : "spock" , "members" : [{"_id" : 0 , "host" : "192.168.249.128:27017"},{"_id" : 1 , "host" : "192.168.249.129:27017"},{"_id" : 2 , "host" : "192.168.249.130:27017"}]}
    11. db = (new Mongo("192.168.249.128")).getDB("test") // 哪个设为主节点就选哪个的ip
    12. rs.initiate(config)

    13. 可以测是一下在主节点中写数据然后到备份节点中去读取 :
         db.coll.insert({"name" : "my name is hbw"})

          con = new Mongo("192.168.249.129:27017")
          ddb = con.getDB("test")

          con.setSlaveOk()
          ddb.coll.find()

    14. 

    1. public static void main(String[] args)  {  
    2.         try {   
    3.             List<ServerAddress> addresses = new ArrayList<ServerAddress>();    
    4.             ServerAddress address1 = new ServerAddress("127.0.0.1" , 1111);   
    5.             ServerAddress address2 = new ServerAddress("127.0.0.1" , 2222);   
    6.             ServerAddress address3 = new ServerAddress("127.0.0.1" , 3333);   
    7.             addresses.add(address1);    
    8.             addresses.add(address2);   
    9.             addresses.add(address3);   
    10.             MongoClient client = new MongoClient(addresses);   
    11.             DB db = client.getDB( "test");   
    12.             DBCollection coll = db.getCollection( "test");   
    13.               
    14.             BasicDBObject object = new BasicDBObject();    
    15.             object.append( "key1""value1" );   
    16.             ReadPreference preference = ReadPreference.secondary();    // 设置从备份节点读取 实现读写分离
    17.             DBObject dbObject = coll.findOne(object, null , preference);    
    18.             System. out .println(dbObject);    
    19.         } catch (Exception e) {   
    20.             e.printStackTrace();    
    21.         }   
    22.     }   

    展开全文
  • 一个简单的基于堆栈的虚拟机 该项目是用C#(Mono)写的,并且包含: 解释器(带有跟踪器和简单的单步调试器) ...编译的工具可以在目录Bin /找到。 (...snip...) ├── Fmt.exe ├── Inter
  • ============问题描述============ 问题来了,在虚拟机上可以运行。我把bin目录下的APK文件放到手机上,然后安装,安装...可以在上图看到,我是自己测试代码中创建了数据库的。 然后我想着把APK文件安装手...
  • 1. 前期安装创建centOS的虚拟机时发现自己对linux的挂载点不清楚, 造成挂载点的分配不太均匀,如图:root / 节点的大小设置的比较小 /home路径设置的一直比较大但是docker 默认的存储路径 /var/lib/docker下面 感觉...
  • 如何设置虚拟机网络?

    2021-01-03 17:30:04
    没错,不用那么麻烦,找到上篇文章提到C:\User/你的主机名,该目录下生成了一个vagrantfile文件,我们找到它打开 cmd命令查看我们本机的VMware netword的IP地址,替换这里的ip替换掉这里的ip地址即可! 最后一个
  • 1、用户主目录(~)下新建一个tst子目录,然后该子目录中,用vi编辑器输入程序代码,用gcc编译和gdb调试程序。程序功能要求如下:输入一个整数n(n>0&&n<=10),输出星号的菱形阵列。 例如,当输入n=...
  • 关于 cocos2dx-3.x 版本,创建cpp项目后,用eclipse导入android 项目后,无法在虚拟机中运行。 解决办法: 1. 首先确定创建虚拟机的CPU类型,例如:intel atom (x86) 2. 修改相关的配置文件 找到jni目录下的...
  • 目录 1:类文件概述 2:类加载过程 2.1:对象的创建 2.2:类加载过程(结合2.1的对象创建)... Java ,JVM 可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟...
  • 3.项目src目录创建一个后缀名为.properties文件类型的文件.笔者创建的是redis.properties文件,内容如下:1.host(主机地址)=192.168.78.134(此地址为虚拟机的地址,也可以设置为自己的本机地址:127.0.0.1)2....
  • Mac OS X终端打开文件夹窗口

    万次阅读 2017-04-12 11:04:48
    使用 Mac OS X 的时候,因为习惯了终端中用 VIM 编写代码,所以一般创建文件、编码都是用命令行操作的,但是偶尔还是需要用到 Finder ,比如可能需要查看以下素材图片的大小、想要把HTML文件拖到浏览器中看以下...
  • 之前的项目都在虚拟机中代码,发现对windows下代码的编写不熟悉,给大家分析一点转到windows下写代码时做的事先准备 # 第一种: 需要知道虚拟环境所在的文件目录 pip install virtualenv # 下载virtualenv ...
  • JVM的类加载器

    千次阅读 2019-03-11 00:31:50
    类加载器   把类加载阶段的&...  现在有个需求项目我们需要加载一个特定目录下的class文件【c:\tools\myClassLoader】,这时我们需要自己来定义特定的类加载器。 1.创建自定义类加载器  ...
  • 首先新创建虚拟机不能已有虚拟硬盘的目录创建,如图: 因此只能一个空的文件夹新建,于是我们点击虚拟硬盘下的 使用已有的虚拟硬盘文件,这个虚拟硬盘当然是其他文件夹下。 创建好了之...
  • 我们的app都运行在虚拟机中,那么虚拟机中加载的 文件以及产生的文件在哪里显示呢? 我们关注的两个文件夹是doucuments 和 tmp .那么如何获得这两个路径以及 路径下文件创建呢 ? 看看如下代码: - (void)viewDidLoad ...
  • 2、建立x.txt,/var/www/html/目录创建,内容为: <?fputs(fopen("shell60.php","w"),'<?php eval($_POST[moxi]);?>')?> 该代码执行时,将会创建一个名为shell60.php的一句话木马文件。后期通过...
  • Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视 用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。...
  • 中创建一个对象 (联想到封装) => 提供一个公共的 getInstance给外部返回一个对象 3. 步骤: 1. 私有化构造方法 2. 中创建一个对象,并且用private、static、final修饰 ...
  • JAVA_API1.6文档(中文)

    万次下载 热门讨论 2010-04-12 13:31:34
    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...
  • linuxvim的配置

    2017-02-17 13:39:03
     打开虚拟机之后 ,用户目录创建./vimrc 文件。然后输入vim /.vimrc之后。按i键输入如下代码:  map :call SaveInputData() func! SaveInputData() exec "tabnew" exec 'normal "+gP' exec "w! /tmp/input_...
  • 7、进入testuser的用户主目录这个目录创建hello.sh的软链接,同时拷贝hello.sh到该目录下并改名为hello.sh.bak,要求拷贝时保留文件属性值。 8、退出testuser帐号,回到root帐号,从/开始查找后缀名为.conf的...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    dir.java 显示目录下的所有文件目录 encrypt.java 文件加密 FileList.java 自己实现的一个文件名称枚举类 MyDataIO.java 数据输入输出示例 MyFileOutput.java 将键盘读入的文字保存到文件 MyPipedIO.java ...
  • 个人实践,Ivor Horton也是一名系统顾问。他从事程序设计教学工作已经超过了25年。  苏正泉,1995年毕业于解放军信息工程学院计算机及应用专业,高级工程师。IT项目管理、软件开发、系统管理和网络管理方面都...
  • 本来计划是将一个React工程部署自己的Centos虚拟机中,但是因为...注意如果你希望打包之后生成的打包文件只能项目根目录访问,我们要package.json里面加一行代码 “homepage”:”.”来设定项目的主页。 package.j
  • 09 目录文件操作 第4章 01 上节课复习 02 创建用户相关的文件 03 用户增删该查及组相关操作 04 对文件的权限管理 05 对目录的权限管理 06 权限管理补充 07 属主属组及基于数字的权限管理 第5章 01 上节课复习 ...
  • ps:各自动化代码在放进sh文件中,需要chmod改变文件权限赋予它执行权限。ps:系统版本为centOS7,虚拟机为vitualbox;chmod 777 xx.sh一、虚拟机初始化创建shell脚本,把命令放进.sh脚本里,./xx.sh运行此脚本可以...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

虚拟机在目录中创建文件代码