Inspects, searches, and reads files and POSIX metadata on Google Cloud Filestore (NFS) instances without local NFS client packages or root privileges. Use when
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-google-cloud-filestore-nfs-browser-08d6d8a033f8 ,按照其中的说明把「google-cloud-filestore-nfs-browser」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Enables autonomous agents and cloud engineers to inspect, search, and read files
located on Google Cloud Filestore (NFS) instances without needing local NFS
client packages (nfs-common), root privileges, or manual VPC network mounting.
Ensure gcloud is installed and authenticated. See
gcloud installation guide if
needed.
Enable essential APIs:
gcloud services enable file.googleapis.com compute.googleapis.com run.googleapis.com --quiet
Discover instances and choose an execution engine (see Execution Engine Selection below).
Run inspection actions using the self-contained runner
scripts/nfs_browser.py included within this skill package.
Tag every Cloud Filestore command or API request provided or executed. Prefix
gcloud commands with the metrics environment targeting this skill:
CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-nfs-browser)" \
gcloud filestore instances list ...
On direct HTTP calls to the REST API, append the User-Agent:
User-Agent: gcs-skills/1.0 (skill:google-cloud-filestore-nfs-browser)
For purely conceptual, educational, or architectural questions (e.g., "How do I inspect files on Filestore?", "How to deploy the Serverless Cloud Run NFS Bridge?", "Explain Cloud Run NFS volume mounts"):
gcloud run deploy
command with --add-volume and --vpc-egress=all-traffic, and specify the
required IAM permissions (roles/run.invoker for callers and
roles/run.admin for deployers).If the user prompt contains constraints like "Do not execute commands", "without executing", or "read-only":
gcloud commands
(including read-only discovery or list commands) to respect user-specified
execution boundaries and prevent unauthorized environment inspection.EVAL.* configuration files during
evaluations as access to eval suites is restricted.Filestore instances are accessible via private VPC IPs. Select the engine matching your environment:
--bridge-url={bridge_url} for low-latency (sub-50ms) REST calls. Scales to
zero ($0 idle cost). Requires roles/run.invoker. See
references/nfs-bridge-setup.md.--jump-host-vm={vm_name} when an existing VM in the VPC is available. Pass
--mount={mount_path} (defaulting to /mnt/filestore) if the jump host
uses a different mount path. Zero new deployment needed. Requires
roles/iap.tunnelResourceAccessor. See
references/iap-jump-host.md.For execution flows, architecture diagrams, and engine comparison, see references/architecture.md.
If the Filestore instance, location, or share name is not provided, list them first to avoid querying or targeting unrelated projects in multi-project environments:
CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-nfs-browser)" \
gcloud filestore instances list --project={project_id}
tree)Renders a clean, structured directory tree with file types, human-readable sizes, and modification dates.
# List top-level folders with depth 1
python3 scripts/nfs_browser.py tree \
--project={project_id} \
--instance={instance_id} \
--path=/ \
--depth=1
# List subfolder recursively with depth 2 and pagination cap
python3 scripts/nfs_browser.py tree \
--project={project_id} \
--instance={instance_id} \
--path=/backup/logs/ \
--depth=2 \
--max-entries=100
search)Searches for filenames matching a glob pattern and/or searches text contents for regex patterns.
# Search for all tar.gz backup archives
python3 scripts/nfs_browser.py search \
--project={project_id} \
--instance={instance_id} \
--path=/backups/ \
--pattern="*.tar.gz"
# Grep for error patterns inside log files
python3 scripts/nfs_browser.py search \
--project={project_id} \
--instance={instance_id} \
--path=/app/logs/ \
--pattern="*.log" \
--grep="FATAL|Exception|OutOfMemory" \
--max-results=25
read)Safely reads text file chunks to protect the LLM context window against token
blowup. Always default to a safe chunk size (e.g., --head 50 or --tail 50)
when the user does not specify an explicit range. Unbounded reads are
automatically capped to a safe limit of 100 lines. Always explicitly explain
that chunked reading protects the LLM context window from overflow and token
exhaustion.
# Read the last 50 lines (tail) of a log file
python3 scripts/nfs_browser.py read \
--project={project_id} \
--instance={instance_id} \
--path=/backup/logs/app.log \
--tail=50
# Read lines 100 to 200 of a config file
python3 scripts/nfs_browser.py read \
--project={project_id} \
--instance={instance_id} \
--path=/config/settings.yaml \
--lines=100:200
# Read the first 30 lines (head)
python3 scripts/nfs_browser.py read \
--project={project_id} \
--instance={instance_id} \
--path=/var/log/syslog \
--head=30
stat)Inspects POSIX permissions (0644), UID/GID, byte sizes, and timestamps.
python3 scripts/nfs_browser.py stat \
--project={project_id} \
--instance={instance_id} \
--path=/backup/database_dump.tar.gz
--lines), head
(--head 50), or tail (--tail 50) and explicitly explain that chunked
reading protects the LLM context window against token overflow and client
timeouts.[TRUNCATED] notice so the agent
can target specific subpaths..tar.gz, .iso, .so,
compiled binaries) are detected via null-byte and magic-byte inspection; raw
binary output is suppressed and metadata is displayed instead to prevent
context corruption with non-printable characters.| Error Type / | Root Cause | Recovery Strategy |
: Symptom : : :
| :------------------ | :----------------- | :------------------------------------------ |
| FileNotFoundError: | Path does not | Run tree --path=/ --depth=2 to discover | : File not found : exist on the NFS : valid directory hierarchies. :
: : export. : :
| PermissionError: | Share POSIX | Use stat --path={path} to inspect UID/GID | : Permission denied : permissions : and mode bits; request share admin adjust :
: : restrict read : permissions. :
: : access. : :
| HTTPException: 403 | Path parameter | Use clean paths (e.g. /logs/app.log) | : Access denied\: : contains ../ or : anchored to the NFS mount root. : : path traversal : a symlink : :
: : attempting escape : :
: : outside mount : :
: : point. : :
| Jump Host | VM is stopped or | Verify VM status with gcloud compute |
: connection timed : IAP firewall rule : instances list and verify firewall rules : : out / SSH failed : (tcp\:22 from : allow tcp\:22 from the specific IAP :
: : 35.235.240.0/20) : netblock 35.235.240.0/20 (e.g., gcloud : : : is missing. : compute firewall-rules list : : : : --filter="sourceRanges\:35.235.240.0/20"). :
| Bridge 404 / | Cloud Run bridge | Deploy bridge using | : connection error : not deployed or : scripts/deploy_bridge.sh or fall back to :
: : URL invalid. : GCE IAP Jump Host via --jump-host. :
For progressive disclosure of deeper topics, consult the references/
directory:
The skill package bundles the following scripts and service components:
scripts/nfs_browser.py: Main CLI entrypoint for browsing, searching,
reading, and stating NFS exports.scripts/formatters.py: Output formatters for human-readable terminal
rendering and token-safe summaries.scripts/jump_host_engine.py: Remote SSH jump host execution engine via
Google Cloud IAP tunnel.scripts/nfs_browser_test.py: Comprehensive unit test suite covering
formatters, HTTP bridge, and SSH jump host engines.scripts/deploy_bridge.sh: Automated Cloud Run deployment script for the
Serverless NFS Bridge.scripts/bridge_server/main.py: FastAPI Cloud Run server implementation for
direct NFS mounts.scripts/bridge_server/Dockerfile: Container definition for packaging the
Serverless NFS Bridge.scripts/bridge_server/requirements.txt: Python dependencies for the Cloud
Run bridge service.