linux系统下,C++编程获得硬盘及主板序列号?执行的时候不要加sudo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统下,C++编程获得硬盘及主板序列号?执行的时候不要加sudo相关的知识,希望对你有一定的参考价值。

我已经查了好几天了,找的代码执行的时候大都需要加 sudo ./xxx。都是通过读hda,sda,dmidecode什么来获取的。我把sudo命令直接写在程序中,然后执行sudo是不要加了,直接提示要输入密码,这个程序是要嵌入到别的程序中的,我没有sudo的权限。在执行的时候也不可能突然让别人输入密码。所以请给我一个不用sudo,不用密码就能获取硬盘、主板序列号的c++程序

既然是sudo才能执行该命令,说明这些命令是只有root用户才能执行的。
因此,执行代码要加到root用户下,
即:属主改为root 属性为755, 所有用户都要执行权限追问

亲,机器是对方的,,我改不了啊,我只写程序

追答

你的程序是运行在你机器上还是对方的机器上?
如果是运行在对方的机器上,你就通知对方这样设置就好了。
如果程序运行在你机器上,你sudo 关对方什么关系?

参考技术A 请问你解决了吗

Linux磁盘及文件系统Linux下磁盘命名和分区

  在为主机添加硬盘之前,首先需要了解Linux系统下对硬盘和分区的命令方法

  一、磁盘命名

  Linux下对SCSI和SATA设备是以sd命名的,第一个SCSI设备是sda,第二个是sdb....以此类推。一般主板上有两个SCSI接口,因此一共可以安装4个SCSI设备。主SCSI上的两个设备分别对应sda和sdb,第二个SCSI口上的设备对应sdc和sdd。一般硬盘安装在SCSI的主接口上,所以是sda和sdb,而光驱一般安装在第二个SCSI的主接口上,所以是sdc。IDE有两个口,第一个IDE口叫做适配器,可以接两块盘,主盘(hda)和从盘(hdb).第二个IDE口主盘(hdc)从盘(hdd)

  二、分区命名

  所谓的磁盘分区指的告诉操作系统可以存取的区域是哪些磁柱之间的区块,如此一来操作系统就能知道他可以在所指定的区块内进行文件数据的读、写、搜寻等动作了。即磁盘分区指定分割槽的起始与结束磁柱。

  分区命名是用设备名称加数字命名的。例如hda1代表的是hda这个硬盘设备上的第一个分区。每个硬盘上最多有四个主分区。多个主分区只能有一个主分区作为启动分区。逻辑分区是从5开始的,每多一个分区,每个磁盘上最多可以有24个扩展分区。

  三、分区步骤

    查看分区:

      fdisk -l   //列出所有硬盘信息

      fdisk -l 设备  //列出指定的硬盘信息

    管理磁盘分区:

      fdisk 磁盘   //创建新的磁盘分区,删除旧的磁盘分区

        m:查看帮助

        p:显示当前硬件的分区,包括没保存的改动

        n:创建一个新的分区

          e:扩展分区

          p:主分区

        d:删除一个分区

        w:保存退出

        q:不保存退出

        t:修改分区类型  //分区的文件系统类型

        l:显示所支持的所有类型

      partprobe命令:通知内核重读硬盘表

      cat /proc/partitions

      新创建的新分区必须格式化了之后才可以使用

  四、分区的目的

    1.可以在不顺时数据的情况下重装系统。比如在独立设置/home挂载点,重装系统时直接标记回/home,数据不会有任何损失

    2.针对不同的挂载点的特性分配适合的文件系统以发挥合理性能。比如对/var使用reiserfs,对/home使用xfs

    3.针对不同挂载点开启不同的挂载选项,如是否需要即时同步,是否开启日志,是否启用压缩

    4.大硬盘搜索范围大,效率低

    5.磁盘配额只能对分区做设定

  五、格式化分区

    mkfs -t ext3 /dev/sda1  //格式化分区成ext3

    mkfs -t ext2 /dev/sda1  //格式化分区成ext2

  六、挂载分区

    要想挂载需要了解mount命令

    mount命令:查看当前系统挂载的文件

      -a:挂载文件中定义的所有文件系统

      -n:不让挂载成功的信息写在/etc/mtable

    unmount:去挂载

    注意:mount挂载的文件系统在重启之后就不存在了,把挂载的信息写到/etc/fstab中就可以永久自动挂载了。

    挂载的信息格式:挂载的设备 挂载点 文件系统类型(默认为defalut) 转储频率(每多少天对文件做一次完全备份) 文件系统自检次序(0表示不检查,只有根为1,其他文件可以同时为2,即跟检查完了就开始检查)

    根据格式直接添加:/dev/sda1 /test ext3 defaults 1 1即可

 总结 
  • 挂载点必须是一个目录。
  • 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。对于其他操作系统建立的文件系统的挂载也是这样,卸载后,目录以前的文件都还在,不会有任何丢失。
  • 目录只占磁盘里的一个inode,存放文件属性等信息。
  • 任何一个分区都必须挂载到某个目录上。
  • 目录是逻辑上的区分。分区是物理上的区分。
  • 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
  • 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
  • 一个分区可以挂在多个目录,但反过来一个目录只能是一个分区的挂载点。

以上是关于linux系统下,C++编程获得硬盘及主板序列号?执行的时候不要加sudo的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何查看硬盘插在主板那个SATA接口上

如何选择超过2T和3T及以上硬盘的MBR与GPT分区形式

Linux磁盘及文件系统Linux下磁盘命名和分区

批处理 命令获取主板序列号 硬盘序列号 CPU ID?

使用WMI编程获取主机硬件信息(CPU_ID,硬盘主板BIOS序列号,Mac地址)

debian查看硬盘序列号