mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix: disk parse
This commit is contained in:
@@ -690,7 +690,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -700,7 +700,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -826,7 +826,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -836,7 +836,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -854,7 +854,7 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist";
|
||||
@@ -864,7 +864,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
@@ -885,7 +885,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -898,7 +898,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
@@ -924,7 +924,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -937,7 +937,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -960,7 +960,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
@@ -973,7 +973,7 @@
|
||||
"@executable_path/Frameworks",
|
||||
"@executable_path/../../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
@@ -996,7 +996,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -1008,7 +1008,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
@@ -1037,7 +1037,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -1049,7 +1049,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
PRODUCT_NAME = ServerBox;
|
||||
@@ -1075,7 +1075,7 @@
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
@@ -1087,7 +1087,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
MTL_FAST_MATH = YES;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd;
|
||||
PRODUCT_NAME = ServerBox;
|
||||
|
||||
@@ -67,6 +67,7 @@ extension DialogX on BuildContext {
|
||||
Future<String?> showPwdDialog({
|
||||
String? hostId,
|
||||
String? title,
|
||||
String? label,
|
||||
}) async {
|
||||
if (!mounted) return null;
|
||||
return await showRoundDialog<String>(
|
||||
@@ -82,7 +83,7 @@ extension DialogX on BuildContext {
|
||||
_recoredPwd[hostId] = val;
|
||||
}
|
||||
},
|
||||
label: l10n.pwd,
|
||||
label: label ?? l10n.pwd,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:toolbox/core/extension/context/dialog.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/data/model/server/server_private_info.dart';
|
||||
import 'package:toolbox/data/res/provider.dart';
|
||||
|
||||
@@ -11,7 +12,10 @@ abstract final class KeybordInteractive {
|
||||
BuildContext? ctx,
|
||||
}) async {
|
||||
try {
|
||||
final res = await (ctx ?? Pros.app.ctx)?.showPwdDialog(title: spi.id);
|
||||
final res = await (ctx ?? Pros.app.ctx)?.showPwdDialog(
|
||||
title: '2FA ${l10n.pwd}',
|
||||
label: spi.id,
|
||||
);
|
||||
return res == null ? null : [res];
|
||||
} catch (e) {
|
||||
return null;
|
||||
|
||||
@@ -18,7 +18,7 @@ class Conn {
|
||||
final idx = lines.lastWhere((element) => element.startsWith('Tcp:'),
|
||||
orElse: () => '');
|
||||
if (idx != '') {
|
||||
final vals = idx.split(Miscs.numReg);
|
||||
final vals = idx.split(Miscs.blankReg);
|
||||
return Conn(
|
||||
maxConn: int.tryParse(vals[5]) ?? 0,
|
||||
active: int.tryParse(vals[6]) ?? 0,
|
||||
|
||||
@@ -5,7 +5,7 @@ import 'package:toolbox/data/model/server/time_seq.dart';
|
||||
import '../../res/misc.dart';
|
||||
|
||||
class Disk {
|
||||
final String dev;
|
||||
final String fs;
|
||||
final String mount;
|
||||
final int usedPercent;
|
||||
final BigInt used;
|
||||
@@ -13,7 +13,7 @@ class Disk {
|
||||
final BigInt avail;
|
||||
|
||||
const Disk({
|
||||
required this.dev,
|
||||
required this.fs,
|
||||
required this.mount,
|
||||
required this.usedPercent,
|
||||
required this.used,
|
||||
@@ -30,7 +30,7 @@ class Disk {
|
||||
if (item.isEmpty) {
|
||||
continue;
|
||||
}
|
||||
final vals = item.split(Miscs.numReg);
|
||||
final vals = item.split(Miscs.blankReg);
|
||||
if (vals.length == 1) {
|
||||
pathCache = vals[0];
|
||||
continue;
|
||||
@@ -40,15 +40,16 @@ class Disk {
|
||||
pathCache = '';
|
||||
}
|
||||
try {
|
||||
final dev = vals[0];
|
||||
if (!_shouldCalc(dev)) continue;
|
||||
final fs = vals[0];
|
||||
final mount = vals[5];
|
||||
if (!_shouldCalc(fs, mount)) continue;
|
||||
list.add(Disk(
|
||||
dev: dev,
|
||||
mount: vals[5],
|
||||
fs: fs,
|
||||
mount: mount,
|
||||
usedPercent: int.parse(vals[4].replaceFirst('%', '')),
|
||||
used: BigInt.tryParse(vals[2]) ?? BigInt.zero,
|
||||
size: BigInt.tryParse(vals[1]) ?? BigInt.one,
|
||||
avail: BigInt.tryParse(vals[3]) ?? BigInt.one,
|
||||
used: BigInt.parse(vals[2]),
|
||||
size: BigInt.parse(vals[1]),
|
||||
avail: BigInt.parse(vals[3]),
|
||||
));
|
||||
} catch (e) {
|
||||
continue;
|
||||
@@ -56,6 +57,11 @@ class Disk {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Disk{dev: $fs, mount: $mount, usedPercent: $usedPercent, used: $used, size: $size, avail: $avail}';
|
||||
}
|
||||
}
|
||||
|
||||
class DiskIO extends TimeSeq<List<DiskIOPiece>> {
|
||||
@@ -169,9 +175,9 @@ class DiskUsage {
|
||||
var used = BigInt.zero;
|
||||
var size = BigInt.zero;
|
||||
for (var disk in disks) {
|
||||
if (!_shouldCalc(disk.dev)) continue;
|
||||
if (devs.contains(disk.dev)) continue;
|
||||
devs.add(disk.dev);
|
||||
if (!_shouldCalc(disk.fs, disk.mount)) continue;
|
||||
if (devs.contains(disk.fs)) continue;
|
||||
devs.add(disk.fs);
|
||||
used += disk.used;
|
||||
size += disk.size;
|
||||
}
|
||||
@@ -179,9 +185,13 @@ class DiskUsage {
|
||||
}
|
||||
}
|
||||
|
||||
// Some NAS may have mounted path like this `//192.168.1.2/`
|
||||
bool _shouldCalc(String dev) {
|
||||
if (dev.startsWith('/dev')) return true;
|
||||
if (dev.startsWith('//')) return true;
|
||||
bool _shouldCalc(String fs, String mount) {
|
||||
if (fs.startsWith('/dev')) return true;
|
||||
// Some NAS may have mounted path like this `//192.168.1.2/`
|
||||
if (fs.startsWith('//')) return true;
|
||||
if (mount.startsWith('/mnt')) return true;
|
||||
// if (fs.startsWith('shm') ||
|
||||
// fs.startsWith('overlay') ||
|
||||
// fs.startsWith('tmpfs')) return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
class BuildData {
|
||||
static const String name = "ServerBox";
|
||||
static const int build = 880;
|
||||
static const int build = 881;
|
||||
static const String engine = "3.19.6";
|
||||
static const String buildAt = "2024-05-09 13:38:11";
|
||||
static const int modifications = 7;
|
||||
static const int script = 45;
|
||||
static const String buildAt = "2024-05-09 14:50:53";
|
||||
static const int modifications = 12;
|
||||
static const int script = 46;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import 'dart:convert';
|
||||
|
||||
abstract final class Miscs {
|
||||
/// RegExp for number
|
||||
static final numReg = RegExp(r'\s{1,}');
|
||||
|
||||
static final blankReg = RegExp(r'\s+');
|
||||
|
||||
/// RegExp for password request
|
||||
|
||||
@@ -42,7 +42,7 @@ abstract final class InitStatus {
|
||||
),
|
||||
disk: [
|
||||
Disk(
|
||||
dev: '/',
|
||||
fs: '/',
|
||||
mount: '/',
|
||||
usedPercent: 0,
|
||||
used: BigInt.zero,
|
||||
|
||||
@@ -504,7 +504,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
}
|
||||
|
||||
Widget _buildDiskItem(Disk disk, ServerStatus ss) {
|
||||
final (read, write) = ss.diskIO.getSpeed(disk.dev);
|
||||
final (read, write) = ss.diskIO.getSpeed(disk.fs);
|
||||
final text = () {
|
||||
final use = '${l10n.used} ${disk.used.kb2Str} / ${disk.size.kb2Str}';
|
||||
if (read == null || write == null) return use;
|
||||
@@ -521,7 +521,7 @@ class _ServerDetailPageState extends State<ServerDetailPage>
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
disk.dev,
|
||||
disk.fs,
|
||||
style: UIs.text12,
|
||||
textScaler: _textFactor,
|
||||
),
|
||||
|
||||
@@ -471,7 +471,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||
@@ -481,7 +481,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "Server Box";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@@ -608,7 +608,7 @@
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = BA88US33G6;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = "Server Box";
|
||||
@@ -618,7 +618,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "Server Box";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
@@ -638,7 +638,7 @@
|
||||
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 880;
|
||||
CURRENT_PROJECT_VERSION = 881;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
"DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
@@ -649,7 +649,7 @@
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||
MARKETING_VERSION = 1.0.880;
|
||||
MARKETING_VERSION = 1.0.881;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
|
||||
PRODUCT_NAME = "Server Box";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
|
||||
97
test/disk_test.dart
Normal file
97
test/disk_test.dart
Normal file
@@ -0,0 +1,97 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
|
||||
void main() {
|
||||
test('parse disk', () {
|
||||
for (final raw in _raws) {
|
||||
print('---' * 10);
|
||||
final disks = Disk.parse(raw);
|
||||
print(disks.join('\n'));
|
||||
print('\n');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const _raws = [
|
||||
// '''
|
||||
// Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
// udev 864088 0 864088 0% /dev
|
||||
// tmpfs 176724 688 176036 1% /run
|
||||
// /dev/vda3 40910528 18067948 20951380 47% /
|
||||
// tmpfs 883612 0 883612 0% /dev/shm
|
||||
// tmpfs 5120 0 5120 0% /run/lock
|
||||
// /dev/vda2 192559 11807 180752 7% /boot/efi
|
||||
// tmpfs 176720 104 176616 1% /run/user/1000
|
||||
// ''',
|
||||
'''
|
||||
Filesystem 1K-blocks Used Available Use% Mounted on
|
||||
udev 16181648 0 16181648 0% /dev
|
||||
tmpfs 3270528 37268 3233260 2% /run
|
||||
boot-pool/ROOT/23.10.2 467090304 3083008 464007296 1% /
|
||||
tmpfs 16352624 112 16352512 1% /dev/shm
|
||||
tmpfs 102400 0 102400 0% /run/lock
|
||||
tmpfs 16352624 12 16352612 1% /tmp
|
||||
boot-pool/grub 464015744 8448 464007296 1% /boot/grub
|
||||
v2000pro 1906569472 128 1906569344 1% /mnt/v2000pro
|
||||
v2000pro/local-app 1921857408 15288064 1906569344 1% /mnt/v2000pro/local-app
|
||||
v2000pro/ix-applications 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications
|
||||
v2000pro/sdd 1906569472 128 1906569344 1% /mnt/v2000pro/sdd
|
||||
v2000pro/ix-applications/catalogs 1907647744 1078400 1906569344 1% /mnt/v2000pro/ix-applications/catalogs
|
||||
v2000pro/ix-applications/k3s 1907116416 547072 1906569344 1% /mnt/v2000pro/ix-applications/k3s
|
||||
v2000pro/ix-applications/releases 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications/releases
|
||||
v2000pro/ix-applications/default_volumes 1906569472 128 1906569344 1% /mnt/v2000pro/ix-applications/default_volumes
|
||||
wd16-raidz 19217443072 256 19217442816 1% /mnt/wd16-raidz
|
||||
wd16-raidz/games 19386510592 169067776 19217442816 1% /mnt/wd16-raidz/games
|
||||
wd16-raidz/store 20526360832 1308918016 19217442816 7% /mnt/wd16-raidz/store
|
||||
wd16-raidz/share 62914560 24397312 38517248 39% /mnt/wd16-raidz/share
|
||||
wd16-raidz/media 60509795968 41292353152 19217442816 69% /mnt/wd16-raidz/media
|
||||
boot-pool/.system 464007424 128 464007296 1% /var/db/system
|
||||
boot-pool/.system/cores 1048576 128 1048448 1% /var/db/system/cores
|
||||
boot-pool/.system/samba4 464007680 384 464007296 1% /var/db/system/samba4
|
||||
boot-pool/.system/rrd-ae32c386e13840b2bf9c0083275e7941 464007424 128 464007296 1% /var/db/system/rrd-ae32c386e13840b2bf9c0083275e7941
|
||||
boot-pool/.system/configs-ae32c386e13840b2bf9c0083275e7941 464010368 3072 464007296 1% /var/db/system/configs-ae32c386e13840b2bf9c0083275e7941
|
||||
boot-pool/.system/webui 464007424 128 464007296 1% /var/db/system/webui
|
||||
boot-pool/.system/services 464007424 128 464007296 1% /var/db/system/services
|
||||
boot-pool/.system/glusterd 464007424 128 464007296 1% /var/db/system/glusterd
|
||||
boot-pool/.system/ctdb_shared_vol 464007424 128 464007296 1% /var/db/system/ctdb_shared_vol
|
||||
boot-pool/.system/netdata-ae32c386e13840b2bf9c0083275e7941 464239744 232448 464007296 1% /var/db/system/netdata-ae32c386e13840b2bf9c0083275e7941
|
||||
v2000pro/ix-applications/k3s/kubelet 1906569728 384 1906569344 1% /var/lib/kubelet
|
||||
tmpfs 512000 12 511988 1% /var/lib/kubelet/pods/26ae1c0e-18cf-4b75-b29d-8ce9636a7da3/volumes/kubernetes.io~projected/kube-api-access-9q9bx
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/c66db36fb35c6c881949ceb69b6c9da9b3ad92e305783ea3b77e65de791f61ba/shm
|
||||
tmpfs 409600 12 409588 1% /var/lib/kubelet/pods/df8fac94-f5c1-4d3a-8f45-8e455510a2c8/volumes/kubernetes.io~projected/kube-api-access-4vzjm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/c66db36fb35c6c881949ceb69b6c9da9b3ad92e305783ea3b77e65de791f61ba/rootfs
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/6f49cc72b9702e2713b67128235c9dd5837b41861022a021c9d315426cc352c4/shm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/6f49cc72b9702e2713b67128235c9dd5837b41861022a021c9d315426cc352c4/rootfs
|
||||
tmpfs 174080 12 174068 1% /var/lib/kubelet/pods/4d744e5b-1b98-41bd-8742-8d987f17c4af/volumes/kubernetes.io~projected/kube-api-access-jrzpb
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/ed0264ba5e5beebb1614da00b9fc9ce2f4241173b4ba8f52f83ffb068dc97034/shm
|
||||
tmpfs 307200 12 307188 1% /var/lib/kubelet/pods/9423f3b8-712e-4539-b473-fb6e4b44481e/volumes/kubernetes.io~projected/kube-api-access-frxkj
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/ed0264ba5e5beebb1614da00b9fc9ce2f4241173b4ba8f52f83ffb068dc97034/rootfs
|
||||
tmpfs 921600 12 921588 1% /var/lib/kubelet/pods/b6e2f566-3d64-4533-835f-1acf24293db8/volumes/kubernetes.io~projected/kube-api-access-v5rql
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/d6a11b1f80e1406ca31c260b4eadf9c7c0e9db17a98eac5d62cbcaf7ea0a013b/shm
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/76401fc48a79755d503ddac81d37ac2e00e0cccbcbd0de5527e3c132a3d93709/shm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/d6a11b1f80e1406ca31c260b4eadf9c7c0e9db17a98eac5d62cbcaf7ea0a013b/rootfs
|
||||
tmpfs 614400 12 614388 1% /var/lib/kubelet/pods/5676e37b-d0a4-4910-b3fd-cf7ec25f201f/volumes/kubernetes.io~projected/kube-api-access-jrm62
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/76401fc48a79755d503ddac81d37ac2e00e0cccbcbd0de5527e3c132a3d93709/rootfs
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/22f66d268f14cedc9d16ff0c31a4babdb4a082e7444f72a745b8f0e6ccc7cec7/shm
|
||||
tmpfs 307200 12 307188 1% /var/lib/kubelet/pods/b528d0cb-cf84-4f25-8d5d-eae89f6c853e/volumes/kubernetes.io~projected/kube-api-access-5bgtp
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/22f66d268f14cedc9d16ff0c31a4babdb4a082e7444f72a745b8f0e6ccc7cec7/rootfs
|
||||
tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/c2070b60-ec0a-4107-97ad-f1eb475ebac3/volumes/kubernetes.io~projected/kube-api-access-scxv6
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/ceb3da406b1d6f38dfab42cc314b69a510947e42867afae6b33d0d8e10e705b5/shm
|
||||
tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/593d00aa-16bb-4d18-906d-37731ba3f8bf/volumes/kubernetes.io~projected/kube-api-access-x54qh
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/26547c6bfd920ed69d0d95c48a3d890695b0238420e4c54ee56075dc43e03ea5/shm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/ceb3da406b1d6f38dfab42cc314b69a510947e42867afae6b33d0d8e10e705b5/rootfs
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/2119c0e105c80619f630691263450234456349d3ddce64b77a184491bda56dd2/rootfs
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/26547c6bfd920ed69d0d95c48a3d890695b0238420e4c54ee56075dc43e03ea5/rootfs
|
||||
tmpfs 32705248 12 32705236 1% /var/lib/kubelet/pods/eccfba54-48aa-4950-b3b8-e18ad155e16d/volumes/kubernetes.io~projected/kube-api-access-lc9gs
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/dda821508458f2207ebfb53485b33932724c5ede375efebbfc002b511daef1f3/shm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/dda821508458f2207ebfb53485b33932724c5ede375efebbfc002b511daef1f3/rootfs
|
||||
shm 65536 0 65536 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/510d5900ec9d403ba57689325b5560f713704d69c784487d9c3be127316e1db8/shm
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/510d5900ec9d403ba57689325b5560f713704d69c784487d9c3be127316e1db8/rootfs
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/a873561950eb40a58a6dfa3dd7e74a171a31b598cd3edacd930d09a8fede9ea1/rootfs
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/fa65821375d894f5039a763315734ed51befdafaa5215e30d2f8f889e351c1a3/rootfs
|
||||
overlay 1907116416 547072 1906569344 1% /run/k3s/containerd/io.containerd.runtime.v2.task/k8s.io/3e463fd96ee1e2ddba7aca7e8cb161b59f33b0a778e5f7d8c1a5939a72a6f4a5/rootfs
|
||||
v2000pro/pve 1906694784 125440 1906569344 1% /mnt/v2000pro/pve
|
||||
v2000pro/download 1906569472 128 1906569344 1% /mnt/v2000pro/download''',
|
||||
];
|
||||
@@ -1,87 +0,0 @@
|
||||
// ignore_for_file: avoid_print
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:toolbox/data/model/server/disk.dart';
|
||||
|
||||
void main() {
|
||||
test('test parse disk', () {
|
||||
const raw = '''
|
||||
Filesystem Size Used Available Use% Mounted on
|
||||
none 400.0M 321.0M 79.0M 80% /
|
||||
devtmpfs 7.7G 4.0K 7.7G 0% /dev
|
||||
tmpfs 64.0M 1.5M 62.5M 2% /tmp
|
||||
tmpfs 7.7G 144.0K 7.7G 0% /dev/shm
|
||||
tmpfs 16.0M 0 16.0M 0% /share
|
||||
/dev/mmcblk0p5 7.7M 46.0K 7.7M 1% /mnt/boot_config
|
||||
tmpfs 16.0M 0 16.0M 0% /mnt/snapshot/export
|
||||
/dev/md9 493.5M 169.3M 324.2M 34% /mnt/HDA_ROOT
|
||||
cgroup_root 7.7G 0 7.7G 0% /sys/fs/cgroup
|
||||
/dev/mapper/vg1-lv1312
|
||||
352.1M 232.0K 351.9M 0% /mnt/pool1
|
||||
/dev/mapper/cachedev1
|
||||
3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA
|
||||
/dev/mapper/cachedev2
|
||||
792.8G 823.3M 791.5G 0% /share/CACHEDEV2_DATA
|
||||
/dev/md13 417.0M 387.1M 29.9M 93% /mnt/ext
|
||||
tmpfs 32.0M 27.2M 4.8M 85% /samba_third_party
|
||||
tmpfs 48.0M 36.0K 48.0M 0% /share/CACHEDEV1_DATA/.samba/lock/msg.lock
|
||||
df: /mnt/ext/opt/samba/private/msg.sock: Permission denied
|
||||
/dev/mapper/vg1-snap10001
|
||||
3.0T 1.4T 1.6T 47% /mnt/snapshot/1/10001
|
||||
/dev/mapper/vg1-snap10004
|
||||
3.0T 1.1T 1.9T 36% /mnt/snapshot/1/10004
|
||||
/dev/mapper/vg1-snap10007
|
||||
3.0T 1.3T 1.7T 43% /mnt/snapshot/1/10007
|
||||
/dev/mapper/vg1-snap10008
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10008
|
||||
/dev/mapper/vg1-snap10009
|
||||
3.0T 1.1T 1.9T 37% /mnt/snapshot/1/10009
|
||||
/dev/mapper/vg1-snap10010
|
||||
3.0T 1.4T 1.6T 46% /mnt/snapshot/1/10010
|
||||
/dev/mapper/vg1-snap10011
|
||||
3.0T 1.1T 1.9T 38% /mnt/snapshot/1/10011
|
||||
/dev/mapper/vg1-snap10012
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10012
|
||||
/dev/mapper/vg1-snap10013
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10013
|
||||
/dev/mapper/vg1-snap10014
|
||||
3.0T 1.2T 1.8T 39% /mnt/snapshot/1/10014
|
||||
/dev/mapper/vg1-snap10015
|
||||
3.0T 1.3T 1.7T 43% /mnt/snapshot/1/10015
|
||||
/dev/mapper/vg1-snap10017
|
||||
3.0T 1.4T 1.6T 46% /mnt/snapshot/1/10017
|
||||
/dev/mapper/cachedev1
|
||||
3.0T 1.4T 1.6T 48% /lib/modules/5.10.60-qnap/container-station
|
||||
tmpfs 100.0K 0 100.0K 0% /share/CACHEDEV1_DATA/Container/container-station-data/lib/lxd/shmounts
|
||||
tmpfs 100.0K 0 100.0K 0% /share/CACHEDEV1_DATA/Container/container-station-data/lib/lxd/devlxd
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/a8b24fbc86efcced498db198044bcef8edc3d5d8d34854556d6def3435451092/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/e336c44a9bd40074eab29515da98f6fb5d4930e0d410994980d103678a46d19b/merg ed
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/badd629737c8abc5e18272165d15eca9e307a885d8809224339bc93cc9b8bf13/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d232b71046f5ecc218e812adc9309f6a95590b2b8ec788a54acec0d33b6a346c/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/de77097c9d1560270bb4e5ad617555f00443c28dd2b4553d38d2eac4db1ed4a5/merged
|
||||
Overlay 3.0T 1.4T 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/OVERLAY2/9E943181C3130C5AD306786CC9F773 E7B698BF87A7549363502D0/Merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/2d997d801b6cd2cf03b8760c8c01b111eec915ac5e57dc4b9d1c6c391e8f951f/merg ed
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/2e73a7857f218c2867ebc7ec69f7764bd5787ea2f9bfdcbfe25cdd2f25d62cd3/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/41c1a6e22899d9d0f8c02f0e9f2683c93b2fd8b2c93d677e9f87552839a1686c/ merged
|
||||
Overlay 3.0T 1.4T 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/OVERLAY2/B23ef7F05050550D2D2D956BBBBBBBBBBBBB D2377575738F3F27D86A0D2/MERGED
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/6a105e8f5e740dceed8a96d16c3fcc95775974e6fbac382b5446b45bb611065b/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/4a25157fa48fcdfc89dcc46e6ff4acb685916a74f1ffbd541f99614dfc825645/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/6a10d2c42c3d2c3057f5c2e8816ddca2e384601666dfeecf19bd1c1d8d7e683b/merged
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d648e717655504c32365b5145df409c1754d0b20d438c7a156763972ded1bfe0/merg ed
|
||||
overlay 3.0T 1.4T 1.6T 48% /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/overlay2/d78d05dca0b50f28e5dcc0846f8034839cc17beb94b16e79095ac4cc00afc6ed/merged
|
||||
/dev/mapper/vg1-snap10002
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10002
|
||||
/dev/mapper/vg1-snap10003
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10003
|
||||
/dev/mapper/vg1-snap10005
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10005
|
||||
/dev/mapper/vg1-snap10006
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10006
|
||||
Overlay 3.0T 1.4t 1.6T 48%/Share/CacheDev1_data/Container/Container-SATA/LIB/DOCKER/Overlay2/67586B522723529842984249DDDDD5F 1A923759CA7ECF626555408/MERGED
|
||||
/dev/mapper/vg1-snap10016
|
||||
3.0T 1.4T 1.6T 48% /mnt/snapshot/1/10016
|
||||
''';
|
||||
final disks = Disk.parse(raw);
|
||||
print(disks.map((e) => '${e.mount} ${e.used}').join('\n'));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user