华为云用户手册

  • 根因分析 通常不会出现删除文件后空间不释放的情况,特殊情况是文件进程锁定,或有进程一直在向这个文件写数据。 为了分析根因,首先需要了解Linux文件的存储机制和存储结构。 一个文件在文件系统中存放分为两个部分: 指针部分:指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了。 数据部分:而数据部分存储在磁盘中。 将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容。出现删除access_log文件后,空间还没有释放的原因,是因为httpd进程还在一直向这个文件写入内容,导致删除了access_log文件后,进程锁定,文件对应的指针部分并未从meta-data中清除,由于指针并未删除,系统内核就默认文件并未被删除,因此查询文件系统使用率时,显示空间并未释放。
  • 问题现象 Linux操作系统云服务器根目录空间占用率过高。例如,以图1为例,根目录空间占用率为96%。 图1 根目录空间占用率过高 查询当前系统存在一个约42G大小的文件access_log,这个文件是apache产生的访问日志文件,从日志大小判断是很久没有清理的apache日志文件了。 执行以下命令删除access_log。 rm /tmp/access_log 执行以下命令查看文件系统使用率。 df -h 删除该文件后使用df查看文件系统使用率仍是96%。
  • 根因分析 执行以下命令,查询有问题的mount unit。 systemctl list-units --type=mount |grep failed test1.mount loaded failed failed /test1 执行以下命令,查询该unit的状态。 systemctl status test1.mount 回显信息如下所示: ● test1.mount - /test1 Loaded: loaded (/etc/fstab; bad; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2019-08-28 15:32:53 CS T; 3min 27s ago Where: /test1 What: /dev/vdb1 Docs: man:fstab(5) man:systemd-fstab-generator(8) Process: 4601 ExecUnmount=/bin/umount /test1 (code=exited, status=0/SUC CES S) Process: 3129 ExecMount=/bin/mount /dev/vdb1 /test1 -t ext4 (code=exited, status=0/SUCCESS) ... ... Warning: test1.mount changed on disk. Run 'systemctl daemon-reload' to reload units. 如回显信息所示test1.mount磁盘发生了改变,需要运行systemctl daemon-reload重新加载units。 更改/etc/fstab时,必须执行systemctl daemon-reload。在运行该命令之前,systemd不读取fstab并生成装载单元。
  • 根因分析 服务端sshd服务开启UseDNS选项状态下,当客户端试图使用SSH连接服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施,但一般我们的是动态IP不会有PTR记录,建议关闭该选项。 执行如下命令确认是否开启了UseDNS选项。 grep UseDNS /etc/ssh/sshd_config 如果该选项值为“yes”或者为注释行则说明已开启该选项。建议参考本节操作修改UseDNS。
  • 场景一:/var/empty/sshd属主非root导致sshd启动失败 sshd启动失败,查看journal日志,提示/var/empty/sshd must be owned by root。 journalctl -xe 查看/var/empty/sshd文件属主信息 ll /var/empty/sshd 如上图所示,由于/var/empty/sshd目录属主非root用户导致sshd服务启动失败。 修改/var/empty/sshd属主,及其权限。 chown -R root.root /var/empty/sshd chmod -R 711 /var/empty/sshd 重启sshd服务,执行: systemctl restart sshd
  • 根因分析 出现该问题通常有三个原因: /etc/resolv.conf未配置 DNS地址 或者DNS地址错误导致。 /etc/nsswitch.conf文件删除DNS解析记录导致。 /lib64/libnss_dns.so.2库文件丢失导致无法解析 域名 。 执行以下命令,查看解析域名打开的所有文件。 strace -e trace=open ping www.baidu.com -c 1 该结果中出现的所有文件都会影响域名解析。
  • 处理方法 场景一:/etc/resolv.conf未配置DNS地址或者DNS地址错误导致。 /etc/resolv.conf中最关键的是nameserver项,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。 nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下一个的nameserver。 请检查/etc/resolv.conf中配置的DNS地址。 场景二:/etc/nsswitch.conf文件删除DNS解析记录导致。 检查/etc/nsswitch.conf是否有DNS解析配置。 grep hosts /etc/nsswitch.conf 回显信息如下所示,hosts行中未配置DNS选项,导致解析域名时不会读取/etc/resolv.conf,导致域名解析失败。 #hosts: db files nisplus nis dns hosts: files myhostname 打开/etc/nsswitch.conf找到hosts行添加DNS解析。 #hosts: db files nisplus nis dns hosts: files dns myhostname hosts项的值代表按优先级顺序列出服务,这些服务用于查找域名的IP地址。 “file”表示使用/etc/hosts文件,“ dns”表示使用域名服务。如果“file”位于“ dns”之前,则意味着系统将首先尝试在/etc/hosts中查找域名,然后才通过DNS查找(这是默认配置)。如果未配置dns则不会使用DNS查找。 场景三:/lib64/libnss_dns.so.2库文件丢失导致无法解析域名。 /lib64/libnss_dns.so.2库文件由glibc包产生,可以通过校验glibc查看包是否被修改。 rpm -V glibc 在正常的Linux系统执行 rpm -qf /lib64/libnss_dns.so.2生成库文件。 回显信息如下所示,说明/lib64/libnss_dns.so.2文件缺失。 missing /lib64/libnss_dns.so.2 执行以下命令,重新建立软链接。 在正常的云服务器上执行ls -l /lib64/libnss_dns.so.2可知/lib64/libnss_dns.so.2的源文件为/usr/lib64/libnss_dns-2.17.so。 ln -s /usr/lib64/libnss_dns-2.17.so /usr/lib64/libnss_dns.so.2
  • 定位过程 查看客户端DHCP请求记录 grep -E "dhclient|DHCP" /var/log/messages 图2 DHCP请求记录 dhclient续租记录显示在5月12日重新续租成功(当时正确的时间为4月26日,系统时间是被手动修改过)。 dhclient记录下一次续租发生在33696秒后(约9小时21分,通常为租约的1/2时发出续租请求),即下次续租发生在5月12日21点21分左右。 也可以通过查询dhclient租约信息记录文件,每一次续租成功都会记录在该文件中。执行以下命令查询文件的保存路径(文件以.lease结尾)。 ps -ef |grep dhclient 继续查看系统日志(messages)发现在续租后的5小时14分后系统时间发生跳变,回退至4月26日,但是由于下次续租请求发生在16天后,但是在9小时后未发出续租请求,租约到期后ip被DHCP服务端回收,导致ip丢失。 grep "Time has been changed" /var/log/messages 图3 系统日志
  • 处理方法 方法1:执行以下命令,停止firewalld服务并取消开机自启。 建议通过安全组和ACL进行访问控制,如业务需要开启firewalld请参考•方法2:执行以下命令,在firewalld服务... systemctl stop firewalld systemctl disable firewalld 方法2:执行以下命令,在firewalld服务中添加新的端口55660。 firewall-cmd --add-port=55660/tcp --permanent --zone=public firewall-cmd --reload
  • 根因分析 登录管理控制台,并通过VNC方式登录云服务器。 执行以下命令,查看是否开启了firewalld。 systemctl status firewalld 图1 开启firewalld 如图1所示,系统已开启firewalld。 执行以下命令,查看firewalld中的规则。 firewall-cmd --list-all 图2 查看firewalld规则 如图2所示,firewall当前的zone为public,该zone默认只放通ssh和dhcpv6-client服务。其中ssh服务为默认的22端口,当ssh修改为非22端口时就无法访问。
  • 根因分析 出现该问题的可能原因如下: CentOS 7中/etc/rc.d/rc.local文件没有执行权限。解决方案请参考处理方法1。 /etc/rc.local为/etc/rc.d/rc.local的软链接 /etc/rc.local配置路由重启不生效的场景,是由于添加路由依赖网络服务,而在CentOS 7系统启动过程中内核读取rc.local时网络服务尚未启动,导致添加路由失败。解决方案请参考处理方法2。
  • 处理方法1 针对/etc/rc.d/rc.local文件没有执行权限导致开机启动脚本执行失败的场景,解决方案如下。 CentOS7中该文件默认没有可执行权限 查看/etc/rc.d/rc.local是否有执行权限 ls -l /etc/rc.d/rc.local -rw-r--r-- 1 root root 473 Sep 14 02:19 /etc/rc.d/rc.local 如回显信息所示该文件没有执行权限,需要为/etc/rc.d/rc.local添加可执行权限。 执行以下命令为/etc/rc.d/rc.local添加可执行权限 chmod +x /etc/rc.d/rc.local
  • 问题分析 在 Linux 的内存管理中,buffer是Linux内存中的Buffer cache。cache是Linux内存中的Page cache。 Buffer cache:主要是当系统对块设备进行读写的时候,对块进行数据缓存的系统来使用,即对块的操作会使用buffer cache进行缓存。 例如:当对一个文件进行写操作的时候,page cache 的内容会被改变,而buffer cache则可以用来将page标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。内核在后续执行脏数据的回写writeback时,就不用将整个page写回,而只需要写回修改的部分即可。 Page cache:主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有read/write操作的时候。Linux默认会将读取的文件内容缓存在内存中,方便后续使用。 Linux默认使用的是lazy模式,即内存如果还够用,则不会主动释放当前的占用的buffer和cache,如果需要内存,则会自动释放buffer和cache,所以正常情况下,cache占用高不会对系统造成影响。
  • CentOS 6操作系统 登录控制台,重启云服务器,单击“远程登录”。 在出现Booting CentOS界面时,按任意键,进入内核选择界面。 图1 Booting CentOS 内核选择界面出现时按下键将光标移至第二内核,然后按回车键进行启动。 待系统启动后,执行以下命令设置默认启动内核为第二内核。 sed 's/default=0/default=1/' /boot/grub/grub.conf -i default默认值为 0(代表从/boot/grub/grub.conf文件中kernel菜单中第一个,从上往下依次是 0,1,2 等)。
  • 场景二:如果结果显示挂载方式rw,则确认是否为文件系统错误导致 执行以下命令,检查内核中关于文件系统的信息。 dmesg |egrep "ext[2..4]|xfs" 输出结果中如果有I/O error ... inode 的错误信息则根因为文件系统错误导致进入只读模式。 如图所示,需要修复文件系统,请先备份数据后操作,由于文件系统在使用中无法修复,需要通过单用户模式(在该模式下磁盘未挂载)修复文件系统。 重启进入单用户模式尝试修复文件系统。 查询当前设备及文件系统 blkid 检查文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 fsck -n /dev/vdb1 xfs系列文件系统执行以下命令 xfs_check /dev/vdb1 如果遇到提示当前文件系统为mounted,需要先umount文件系统。 执行以下命令,查看当前挂载信息执行 mount 卸载设备 umount 挂载点 修复文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 fsck /dev/vdb1 xfs系列文件执行以下命令 xfs_repair /dev/vdb1
  • 处理方法 执行以下命令,确认dhclient是否运行。 ps -ef |grep dhclient |grep -v grep 如果未找到dhclient进程,则确认dhclient进程未运行,执行以下命令,继续排查NetworkManager是否运行。 systemctl status NetworkManager 如果NetworkManager的状态为Active: inactive (dead),则NetworkManager未启动,执行以下命令,检查该服务是否开机自启。 systemctl is-enabled NetworkManager 结果为disabled则确认为NetworkManager未设置开机自启导致,执行以下命令进行恢复。 systemctl enable NetworkManager && systemctl start NetworkManager 如果NetworkManager的状态为Active: active (running),执行以下命令查看网卡设备是否被NetworkManager管理。 nmcli device status 如果显示该网卡为的STATE为unmanaged,则该网卡设备未被NetworkManager管理,执行以下命令进行恢复。 nmcli device set eth0 managed yes 执行以下命令重启NetworkManager。 systemctl restart NetworkManager 执行以下命令查看ip是否已经获取。 ip add
  • 方法一:通过编辑sshd配置文件实现允许或者禁止指定用户/用户组或者IP登录 允许指定用户进行登录(白名单) 在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,在配置文件末尾添加行格式如下(例如允许用户test通过192.168.1.2登录)。 AllowUsers test@192.168.1.2 配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。 禁止指定用户登录(黑名单) 在 /etc/ssh/sshd_config 配置文件中设置DenyUsers选项,在配置文件末尾添加行格式如下(例如禁止用户testuser登录)。 DenyUsers testuser 上述修改需要重启sshd服务。 CentOS 6系列执行以下命令进行重启: service sshd restart Centos 7/EulerOS系列执行以下命令进行重启: systemctl restart sshd
  • 方法二:使用DenyHosts允许或者禁止指定IP通过SSH登录 linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件,可以限制或者允许某个或者某段IP地址远程SSH登录服务器.方法比较简单,具体如下: 允许192.168.1.3 这个IP地址ssh登录,打开/etc/hosts.allow,添加如下行: sshd: 192.168.1.3 禁止所有ip通过ssh登录,打开/etc/hosts.deny,添加如下行: sshd:ALL hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,假设按照上述方法设置后服务器只允许192.168.1.3这个IP地址的SSH登录,其它的 IP 都会拒绝。
  • 操作步骤 执行如下命令,查看云服务器CPU核数。 cat /proc/cpuinfo 关于CPU的核心参数说明: processor:指明第几个CPU处理器 cpu cores:指明每个处理器的核心数 执行以下命令,获取进程状态(以下操作以进程test.sh为例,对应的pid为23989) ps aux | grep test.sh 执行以下命令,查看进程当前运行在哪个CPU上。 taskset -p 进程号 例如:taskset -p 23989 显示的是十六进制数字1,转换为二进制为0001。每个1对应一个CPU,所以进程运行在第0个CPU上。 执行以下命令,指定进程运行在第二个CPU(CPU1)上。 taskset -pc 1 进程号 例如:taskset -pc 1 23989 CPU的标号是从0开始的,所以CPU1表示第二个CPU(第一个CPU的标号是0),这样就把应用程序test.sh绑定到了CPU1上运行。 也可以使用如下命令在启动程序时绑定CPU(启动时绑定到第二个CPU)上。 taskset -c 1 ./test.sh&
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 devices Array of DeviceInfoMuti objects 设备列表 total Integer 查询条数 表5 DeviceInfoMuti 参数 参数类型 描述 device_id String 设备ID,设备唯一标识符 device_name String 设备名称 device_state String 设备状态 枚举值: OFFLINE 离线 ONLINE 在线 UNREGISTERED 未注册 device_type String 设备类型 枚举值: IPC 通用相机 NVR NVR设备 MEdge IVS1800设备 IPC-BULLET 枪机 IPC-BOX 筒机 IPC-CONCH 半球/海螺 IPDOME 球机 device_system_state String 设备系统冻结 枚举值: NORMAL 正常 UNAVAILABLE_FROZEN 冻结 create_time String 创建时间 update_time String 更新时间,在设备重新上线后或者移动设备分组后会修改时间 access_protocol Integer 接入协议类型 manufacture String 生产厂家 device_ability String 设备能力集:枚举类型,参考附录设备能力集,多个能力集用英文逗号分隔 device_cloud_ability Object 云端能力集规格 channel_total Integer 通道总数 channel_online_total Integer 通道在线总数 channel_offline_total Integer 通道离线总数 org_list Array of 表6 DeviceOrgInfo objects 设备组结果 sdk_ability String sdk能力集 表6 DeviceOrgInfo 参数 参数类型 描述 device_org_id String 设备组织ID device_org_name String 设备组织名称 device_org_level Integer 设备组织层级
  • 响应示例 状态码: 200 OK { "total" : 2, "devices" : [ { "device_id" : "952352DJNR***", "device_name" : "测试设备", "device_state" : "ONLINE", "device_system_state" : "NORMAL", "device_type" : "IPC", "manufacture" : "jovision", "device_ability" : "ptz,talk", "device_cloud_ability": { "alarm_voice": { "support": "true" }}, "access_protocol" : "HOLO", "channel_total" : 1, "channel_online_total" : 1, "channel_offline_total" : 0, "sdk_ability" : "***", "org_list" : { "device_org_id" : "1234567890***", "device_org_name" : "测试设备组织**", "device_org_level" : "1" }, "create_time" : "2020-06-26 20:42:16", "update_time" : "2020-06-26 20:42:16" }, { "device_id" : "952352LWXT***", "device_name" : "测试设备1", "device_state" : "ONLINE", "device_system_state" : "NORMAL", "device_type" : "IPC", "manufacture" : "jovision", "device_ability" : "ptz,talk", "device_cloud_ability": { "alarm_voice": { "support": "true" }}, "access_protocol" : "HOLO", "channel_total" : 1, "channel_online_total" : 1, "channel_offline_total" : 0, "sdk_ability" : "***", "org_list" : { "device_org_id" : "1234567890***", "device_org_name" : "测试设备组织**", "device_org_level" : "1" }, "create_time" : "2020-06-26 20:42:16", "update_time" : "2020-06-26 20:42:16" } ] }
  • URI GET /v1/{user_id}/devices 表1 路径参数 参数 是否必选 参数类型 描述 user_id 是 String 用户ID:由数字组成,长度范围[15,25],获取方式参考获取user ID与下载AK/SK章节 表2 Query参数 参数 是否必选 参数类型 描述 access_protocol 否 String 接入协议:枚举类型,多个使用英文逗号分隔 枚举值: HOLO 好望协议 GB28181 国标协议 device_name 否 String 模糊查询字段:支持设备名称模糊匹配,由字符组成,支持数字、中文(一个汉字算两个字符)、英文、-、_、空格,长度范围[0,128] device_state 否 String 设备状态:枚举类型,多个查询使用英文逗号分隔 枚举值: OFFLINE 离线 ONLINE 在线 UNREGISTERED 未注册 device_system_state 否 String 设备系统状态:枚举类型,多个查询使用英文逗号分隔 枚举值: NORMAL 正常 UNAVAILABLE_FROZEN 冻结 device_type 否 String 设备类型:枚举类型,多个查询使用英文逗号分隔 枚举值: IPC 直连摄像机 NVR NVR设备 MEdge IVS1800设备 ability 否 Array of strings 查询的能力集列表:不传默认查询所有能力集,数组长度范围[0,10]。能力集对应能力参考设备能力集。 need_cloud_ability 否 Boolean 是否需要返回云上管理的能力集:false,不返回云上能力集信息;true,返回云上能力集信息。不填默认false need_specification 否 Boolean 是否需要能力规格:false,不返回能力规格;true,返回能力规格。不填默认false direction 否 String 排序方向:枚举类型,默认降序,不区分大小写 枚举值: ASC 升序 DESC 降序 limit 否 Integer 限制条数:取值范围[0,1000],不填写时默认值为10 offset 否 Integer 偏移量页数:0为第一页,取值范围[0,2147483646],不填写时默认为0,同时offset*limit需小于2147483646 sort_by 否 String 排序字段:枚举类型,默认按创建时间create_time排序 枚举值: create_time 创建时间 update_time 更新时间
  • URI GET /v1/{user_id}/devices/{device_id}/channels/{channel_id} 表1 路径参数 参数 是否必选 参数类型 描述 channel_id 是 String 通道ID: 好望设备:取值范围[0,999] 国标设备:由数字组成,长度为20个字符,由客户自行在设备侧设置,可以在web界面获取 device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 国标设备:由数字组成,长度为20个字符长度,由客户自行设置,其中第11-13位,必须是以下之一132(IPC)、111(DVR)、118(NVR),用来区分设备类型 user_id 是 String 用户ID:由数字组成,长度范围[15,25],获取方式参考获取user ID与下载AK/SK章节
  • 请求参数 表2 Query参数 参数 是否必选 参数类型 描述 ability 否 Array of strings 查询的能力集列表:不传默认查询所有能力集,数组长度范围[0,10] need_cloud_ability 否 Boolean 是否需要返回云上管理的能力集:false,不返回云上能力集信息;true,返回云上能力集信息。不填默认false need_specification 否 Boolean 是否需要能力规格:false,不返回能力规格;true,返回能力规格。不填默认false 表3 请求Header参数 参数 是否必选 参数类型 描述 Access-Token 是 String 用户认证AccessToken:从获取用户北向接口认证AccessToken中获取
  • 响应示例 状态码: 200 OK { "device_id" : "952352DJNR***", "channel_id" : "0", "channel_name" : "龙岗通道1", "channel_state" : "ONLINE", "access_protocol" : "HOLO", "channel_system_state" : "NORMAL", "channel_resource_state" : [ "MANAGEMENT_GRANT", "EVENT_RECORD_CLOSED", "FULL_RECORD_CLOSED" ], "channel_ability" : "ptz,talk", "device_cloud_ability": { "alarm_voice": { "support": "true" }}, "model" : "L", "channel_intelligent" : "[{\"name\":\"perimeter\",\"enable\":true}]", "firmware" : "V22", "channel_firmware_id": "", "create_time" : "2020-06-26 20:42:16.0", "update_time": "2023-12-05 10:09:46.0", "sn": "", "channel_type": "IPC", "resolution": "5/6/4" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 device_id String 设备ID,设备唯一标识 channel_id String 通道ID channel_name String 通道名称 channel_state String 通道状态 枚举值: OFFLINE 离线 ONLINE 在线 UNREGISTERED 未注册 access_protocol String 接入协议 枚举值: HOLO 好望协议 GB28181 国标协议 channel_system_state String 设备系统状态 枚举值: NORMAL 正常 UNAVAILABLE_FROZEN 冻结 channel_resource_state Array of strings 通道资源 枚举值: MANAGEMENT_GRANT 管理套餐开通 MANAGEMENT_ARREAR 管理套餐欠费 MANAGEMENT_CLOSED 管理套餐未开通 EVENT_RECORD_GRANT 动检套餐开通 EVENT_RECORD_ARREAR 动检套餐欠费 EVENT_RECORD_CLOSED 动检套餐关闭 FULL_RECORD_GRANT 全量套餐开通 FULL_RECORD_ARREAR 全量套餐欠费 FULL_RECORD_CLOSED 全量套餐关闭 INDUSTRY_DATA_GRANT 行业数据流套餐开通 INDUSTRY_DATA_ARREAR 行业数据流套餐欠费 INDUSTRY_DATA_CLOSED 行业数据流套餐关闭 channel_ability String 通道能力集:枚举类型,参考附录设备能力集,多个能力集用逗号分隔 device_cloud_ability Object 云端能力集规格 model String 通道的设备型号,如:D3250 channel_intelligent String 智能算法能力集 firmware String 通道的设备固件版本号,如:SDC 10.0.0 create_time String 通道创建时间 update_time String 通道更新时间 sn String SN号 channel_firmware_id String 通道的设备固件版本号 channel_type String 通道类型 resolution String 分辨率
  • URI GET /v1/{user_id}/devices/{device_id}/channels/{channel_id}/preset-position 表1 路径参数 参数 是否必选 参数类型 描述 channel_id 是 String 通道ID:由数字组成,目前只支持好望设备,取值范围[-1,999] device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 user_id 是 String 用户ID:由数字组成,长度范围[15,25],获取方式参考获取user ID与下载AK/SK
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 preset_positions Array of getPresetPositionItem objects 预置位信息列表 表4 getPresetPositionItem 参数 参数类型 描述 preset_index Integer 预置点位序号 preset_name String 预置点位名称 jpg_base64 String jpg图片,jpg格式的图片经过base64编码后的字符串
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 playback_connections PlaybackConnectionsResp object 回放信息 表5 PlaybackConnectionsResp 参数 参数类型 描述 device_id String 设备ID:设备唯一标识,长度范围[1,32] channel_id String 通道ID:长度范围[1,20] cloud_trans_connections CloudTransChannelsResp object 转发实况连接结构体 p2p_connections P2PChannelsResp object P2P实况连接结构体:仅支持HOLO媒体播放协议,前端回放类型且请求设备为好望设备 表6 CloudTransChannelsResp 参数 参数类型 描述 playback_url String 转发回放地址:将此url输入播放地址栏开始播放 表7 P2PChannelsResp 参数 参数类型 描述 token String P2P请求Token device_state String 在线状态:枚举类型 枚举值: OFFLINE 离线 ONLINE 在线 p2p_nodes Array of P2PMTSListResp objects P2P连接可用节点 result Result object 错误信息 表8 P2PMTSListResp 参数 参数类型 描述 node_type String 节点类型:枚举类型 枚举值: COMMON 普通:普通的三线(移动,联通,电线)服务器,与地域有关,服务器由运营商托管,网络通信质量低 BETTER 优质:全网通服务器(华为云服务器等),网络通信质量高 address_type String 地址类型:枚举类型 DOMAIN 域地址 IPV4 IPv4地址 IPV6 IPv6地址 address Array of strings 媒体转发服务地址: 协议头在SDK封装 ,根据address_type决定地址类型 DOMAIN: www.huawei.com IPV4: 123.123.123.123 IPV6: fe80::f816:3eff:feed:5821 tcp_port Integer TCP端口:默认值为 0 备注:未使用0端口,tcp_port只作为兼容字段保留 udp_port Integer UDP端口:默认值为 7050 表9 Result 参数 参数类型 描述 code String 错误编码:请参见错误码 msg String 错误信息
  • 响应示例 状态码: 200 OK { "playback_connections": { "device_id": "219123456CYP***", "channel_id": "0", "cloud_trans_connections": { "playback_url": "jvmp://123.123.123.123:7070/vod/219123456CYP***?token=content***" }, "p2p_connections": { "token": "content***", "device_state": "ONLINE", "p2p_nodes": [ { "node_type": "COMMON", "address_type": "IPV4", "address": [ "123.123.123.123" ], "tcp_port": 0, "udp_port": 7050 } ], "result": { "code": "IVM.0", "msg": "Success" }, "start_time": "2023-03-20 10:05:00", "end_time": "2023-03-20 12:50:00" } } } { "playback_connections": { "device_id": "219123456CYP***", "channel_id": "0", "cloud_trans_connections": { "playback_url": "http://123.123.123.123:7083/dev_vod/vod.m3u8?token=content***&device_id=219123456CYP***&channel_id=0&stream_type=0" }, "p2p_connections": {} } } { "playback_connections": { "device_id": "219123456CYP***", "channel_id": "0", "cloud_trans_connections": { "playback_url": "https://123.123.123.123:7081/vod/vod.m3u8?token=content***&device_id=219123456CYP***&channel_id=0" }, "p2p_connections": {} } }
共100000条